Php 带搜索参数的Laravel分页

Php 带搜索参数的Laravel分页,php,pagination,laravel,laravel-4,Php,Pagination,Laravel,Laravel 4,单击分页链接时,我在保存搜索参数时遇到问题。例如,如果搜索查询返回40条记录,而我有两个页面,那么单击第二个页面将返回完整记录集的第二个页面,而不仅仅是搜索返回的40条 以下是来自我的控制器的postIndex: public function postIndex(){ $validator = Validator::make( Input::all(), array('priceMin' => array('numeric'),

单击分页链接时,我在保存搜索参数时遇到问题。例如,如果搜索查询返回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:

然后,retriever对象在旧输入中循环,查找所有有效的搜索参数,用它们查询数据库,并用指定的数量分页,在本例中为20


我尝试过使用->appends,但是数据不在Input::old中,如果有10个搜索参数,那么它将成为一个糟糕的url,因为它使用GET而不是POST。如何将我的参数应用于分页链接?

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

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


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

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

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


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

您也可以将搜索参数保存到数据库中,并且只使用URL中的搜索id和页面。更多的工作,但清洁:是的,这也是解决方案。通过这种方式,你可以发现用户搜索的内容,等等。是的,这是我最近做的事情,因为我最初像你一样做。不过,我不会保存搜索查询。很可能很快就会实施。@RobGordijn您能详细介绍一下您的想法吗?无论如何,我都打算在以后的日子里保存搜索结果。我不确定如何使用中的搜索id从postIndex重定向URL@vikingsfan19其基本思想是让用户填写搜索表单并将其发布到您的应用程序中。在post方法中,必须获取、验证并保存输入的搜索参数。使用用户提供的信息创建搜索模型。有一个与搜索相关的搜索规则,这样您就可以保存每个搜索参数id、搜索id、名称和值。保存后,将浏览器重定向到/search/result/1337这样的页面。1337将是搜索的id。获取该搜索的规则,启动searchclass并显示结果。通过这种方式,url更干净,您可以获得搜索状态。您还可以将搜索参数保存到数据库中,并且只使用url中的搜索id和页面。更多的工作,但清洁:是的,这也是解决方案。通过这种方式,你可以发现用户搜索的内容,等等。是的,这是我最近做的事情,因为我最初像你一样做。不过,我不会保存搜索查询。很可能很快就会实施。@RobGordijn您能详细介绍一下您的想法吗?无论如何,我都打算在以后的日子里保存搜索结果。我不确定如何使用中的搜索id从postIndex重定向URL@vikingsfan19其基本思想是让用户填写搜索表单并将其发布到您的应用程序中。在post方法中,必须获取、验证并保存输入的搜索参数。使用用户提供的信息创建搜索模型。有一个与搜索相关的搜索规则,这样您就可以保存每个搜索参数id、搜索id、名称和值。保存后,将浏览器重定向到/search/result/1337这样的页面。1337将是搜索的id。获取该搜索的规则,启动searchclass并显示结果。这样,url更干净,您可以获得搜索统计信息
public function getIndex(){

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

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