1

ページネーション リンクをクリックしたときに検索パラメータを保持するのに問題があります。たとえば、検索クエリが 40 件のレコードを返し、2 ページがある場合、2 ページ目をクリックすると、検索によって返された 40 件だけではなく、レコードの完全なセットの 2 ページ目が返されます。

これがpostIndex()私のコントローラーからのものです:

public function postIndex(){

    $validator = Validator::make(
        Input::all(),
        array('priceMin' => array('numeric'),
            'priceMax' => array('numeric')
            )
    );

    if ($validator->fails()){
        return Redirect::to('items')->withInput()->withErrors($validator);
    } else {
        return Redirect::to('items')->withInput();
    }
}

そして私のgetIndex()

public function getIndex(){

    $items= $this->retriever->getListings(Input::old(), 20);

    return View::make('listings', array('items' => $items);
}

次に、retrieverオブジェクトは古い入力をループしてすべての有効な検索パラメーターを見つけ、それらをデータベースに照会し、指定された量 (この場合は 20) でページ付けします。

私は使用しようとしまし->appends()たが、データが入っていませんInput::old().10個の検索パラメータがあるGETと、POST. パラメータをページネーション リンクに適用するにはどうすればよいですか?

4

1 に答える 1

5

POSTリクエストを使用してフィルタリング/ソート/検索を行うことは決してありません!!! これはただ間違っている

一般に、ユーザーが何らかのデータ (検索パラメーター) が送信されたページ (検索結果ページ) をリロードしようとすると、ブラウザーはそのデータをリロードして再送信するかどうかを尋ねます。少なくとも、これは迷惑だと言ってはいけません。

appends()解決策: 「醜い」URL を生成するという事実にもかかわらず、Laravel メソッドを使用して使用します。これは、フレームワークに関係なく、一般的な解決策です。

于 2013-08-08T22:42:24.800 に答える