Laravel与搜索参数分页

时间:2013-08-08 22:08:35

标签: php pagination laravel laravel-4

点击分页链接时,我无法保留搜索参数。例如,如果搜索查询返回40条记录并且我有两个页面,则单击第二页将返回完整记录集的第二页,而不仅仅是搜索返回的40页。

以下是我的控制器中的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 {{1}}。如何将我的参数应用于分页链接?

1 个答案:

答案 0 :(得分:5)

我永远不会使用POST请求进行任何过滤/排序/搜索!这是错误的

通常,如果用户尝试重新加载已发送某些数据(搜索参数)的页面(搜索结果页面),浏览器会询问是否应重新加载并重新发送该数据。我不能说,至少这很烦人。

解决方案:坚持使用Laravel方法并使用appends(),尽管它会生成“丑陋”的URL - 这是一种常见的解决方案,无论框架如何。