Laravel 4 如何将查询字符串自动附加到laravel分页链接?

Laravel 4 如何将查询字符串自动附加到laravel分页链接?,laravel-4,pagination,Laravel 4,Pagination,我正在使用Laravel和Ajax调用在复选框单击时进行搜索筛选。因此,当我点击复选框时,我会得到结果。我的质询如下: $editors = User::with(['editor.credentials','editor.specialties','editor.ratings']); $temp=$editors->whereHas('editor', function($q) use ($a_data){ $q->whereHas

我正在使用Laravel和Ajax调用在复选框单击时进行搜索筛选。因此,当我点击复选框时,我会得到结果。我的质询如下:

    $editors = User::with(['editor.credentials','editor.specialties','editor.ratings']);
        $temp=$editors->whereHas('editor', function($q) use ($a_data){
            $q->whereHas('specialties',function($sq) use($a_data){
            $sq->whereIn('specialty',$a_data);
            });
        })->paginate(2);
这给了我所有需要的数据。但是,如何获取分页链接

    $temp->setBaseUrl('editors');
    $links = $temp->links()->render();

我目前正在做这项工作,并使用作为对ajax调用的响应而发送的$links,使用$links数据设置分页。现在,我需要将查询附加到下一页,如page=2?query=“something”。我不知道如何将剩余的查询结果链接附加到下一页链接。i、 我不知道;我不知道在query=“something”部分应该包含什么。有人能指引我吗。谢谢

查看@Arda的答案,因为这是一个全局解决方案。下面您可以找到如何手动执行此操作

在分页器上使用
附录

$querystringArray = Input::only(['search','filter','order']); // sensible examples

// or:
$querystringArray = ['queryVar' => 'something', 'anotherVar' => 'something_else'];

$temp->appends($querystringArray);

将其添加到应用程序中的任何位置(例如routes.php、filters.php或任何自动加载的内容),无需编辑任何已编写的分页代码。使用视图生成器可以完美地实现这一点,您不需要知道任何查询字符串参数:

////////PAGINATION QUERY STRING APPEND
View::composer(Paginator::getViewName(), function($view) {
    $queryString = array_except(Input::query(), Paginator::getPageName());
    $view->paginator->appends($queryString);
});
//////////////////

对于目前最新版本的Laravel(5.2),您可以使用请求外观检索查询字符串并将其传递给paginator的appends()方法


它将所有查询字符串参数追加到分页链接中

追加除实际页面、表单标记和您不希望传递的内容之外的所有输入:

$paginatedCollection->appends(request()->except(['page','_token']));

受前面答案的启发,我最终使用服务容器来支持前端和api

在您的
AppServiceProvider@boot()
方法:

$this->app->resolving(LengthAwarePaginator::class, function ($paginator) {
    return $paginator->appends(array_except(Input::query(), $paginator->getPageName()));
});

在显示分页的视图中

{{ $results->appends(Request::except('page'))->links() }}

appends保留除“page”之外的查询字符串值。不确定它是否能与POST请求一起使用

您可以在视图中使用相同的请求帮助程序

{{ $users->appends(request()->query())->links() }}

从Laravel 7开始,您可以在
Paginator
实例上调用
withQueryString()
方法

引用文件:

如果希望将所有当前查询字符串值附加到分页链接,可以使用withQueryString方法:

{{ $users->withQueryString()->links() }}

请参阅“附加到分页链接”:

routes.php第20行中的FatalErrorException:找不到类“Paginator”。此答案适用于Laravel 4@Tarzan,在Laravel 5中,类是PSR-4标准,因此需要在前面添加\字符。但是我没有在LAravel 5中尝试过这一点。View::composer(\Paginator::getViewName(),function($View){$queryString=array_,除了(Input::query(),\Paginator::getPageName());$View->Paginator->appends($queryString);});不工作您使用的是哪个版本的Laravel@TarzanLaravel 5,你能建议我如何在我的控制器中获得菲律宾人吗,想要一个根据菲律宾人的过滤器基于此,我在视图中使用了请求助手:
{{$users->appends(request()->query())->links()}
或者更好的
{$posts->appends(request()->除了('page'))->links()}
@FosAvance谢谢。这没有任何附加值。对我来说就像是Ehsan密码一样。区别是什么?完美的答案。感谢斯沃思·诺丁,您最好同时绑定分页器类型、lenghaware和Normal,您还可以将其直接应用于模型查询<代码>用户::paginate()->withQueryString()允许您在视图中执行此操作:
{{{$users->links()}
{{ $users->appends(request()->query())->links() }}
{{ $users->withQueryString()->links() }}
  {{ $users->appends(Request::only(['filter','search']))->links()}}