点击分页链接时,我无法保留搜索参数。例如,如果搜索查询返回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}}。如何将我的参数应用于分页链接?
答案 0 :(得分:5)
我永远不会使用POST请求进行任何过滤/排序/搜索!这是错误的
通常,如果用户尝试重新加载已发送某些数据(搜索参数)的页面(搜索结果页面),浏览器会询问是否应重新加载并重新发送该数据。我不能说,至少这很烦人。
解决方案:坚持使用Laravel方法并使用appends()
,尽管它会生成“丑陋”的URL - 这是一种常见的解决方案,无论框架如何。