0

GitHub から sentry を使用して、laravel のスターター キットをダウンロードしました。

これまでのところ、すべて問題ありません。ブログページにはページネーションがあります。同じ pagination(x) 値を変更することで、ページあたりのアイテム数を好きなように変更できます。

問題は、検索したキーワードの結果を表示する「検索」という新しいページを自分で手動で作成したことです。

ここで同じページネーションを追加しました。前述のページごとのアイテム数、ページ番号、矢印が表示されます。すべてが完璧ですが、ページ 2 をクリックすると空白のページが表示されます。白紙ページのページソースも空です。URL は 2 ページに最適です。次のように正しく生成されます

sitename.dev/search?page=2

どこが間違っているのか教えてください。ブログページのページネーションは引き続き正常に機能します。問題は、新しく作成された SEARCH ページのページネーションでのみ発生します。

これは私のコントローラーです

public function postSearch()
{
    $searchString = Input::get('searchInput');

    $posts = Post::where('title', 'LIKE', '%' . $searchString . '%')->orderBy('created_at', 'DESC')->paginate(4);

    if($searchString){

    return View::make('frontend/search', compact('posts'))->with('success', 'Account successfully updated')->with('posts', $posts);
    }
    else{
        return Redirect::route('home')->with('error', 'Please enter Search Term');
    }

}

これが私のルートです

Route::any('/search', 'BlogController@postSearch');
4

4 に答える 4

6

後で使用するために URL をブックマーク/保存するのが簡単になるため、GET メソッドを使用してフォームを検索する方が適切です。Laravel 4 のページネーションには、クエリ文字列を追加するメソッドがあります。そのため、検索クエリ文字列を他のページに保持できます。

ドキュメント: http://laravel.com/docs/pagination#appending-to-pagination-links

私のコード:

検索フォーム

<form method="get" action="{{{ URL::to('lib/search') }}}">
<input class="input-xxlarge" name="q" type="text" placeholder="Search...">
<div class="control-group">
    <div class="controls">
        <input type="submit" class="btn" id="submit" value="Submit" />
    </div>
</div>

ルーティング

Route::get('lib/search', 'LibraryController@getSearch');

コントローラ

public function getSearch()
{
    $search = Input::get('q');

    $posts = $this->post->where('title', 'like', '%'.$search.'%')->paginate(10);

    return View::make('site/libraries/list', compact('posts', 'search'));
}   

ページネーションを表示するView / Blade Atメソッド:

{{ $posts->appends(array('q' => $search))->links() }}

それで、q=?を保持できます。他のページのクエリ文字列 (例: /lib/search?page=2&q=apple)

于 2013-07-29T03:21:00.880 に答える
0

追加は私の問題を解決しました。また、追加を使用すると、ユーザーは将来の使用のために URL を保存/ブックマークすることができます。

しかし、1 つの問題は、結果の最初のページを追加していないことです。

于 2013-07-03T17:06:48.393 に答える
0

いくつかの確認事項。

  1. 新しいルートがファイルに存在しapp/routes.phpます。
  2. 新しいルートのビュー ファイルを返しています。
  3. そのビュー ファイルには、ページネーション出力があります。例: <?php echo $articles->links(); ?>.

最終的に、なんらかのエラーが発生しているように見えます。これが、ページが空白で表示される理由です。開発環境でphpエラーをオンにして、その後何が起こるかを確認してください。

于 2013-07-03T15:32:10.717 に答える