Laravel Pagination链接不包括其他GET参数

问题描述 投票:76回答:10

我和Laravel 4的Pagination课一起使用Eloquent。

问题:当URL中有一些GET参数时,例如:http://site.com/users?gender=female&body=hot,生成的分页链接只包含page参数而不包含任何其他参数。

刀片模板

{{ $users->link() }}

有一个->append()函数,但是当我们不知道有多少GET参数时,我们如何使用append()在分页链接中包含其他GET参数而没有一大堆if代码搞乱我们的刀片模板?

pagination laravel laravel-4 eloquent blade
10个回答
103
投票

编辑:Connor对Mehdi的答案的评论是必要的。感谢他们的澄清。

->appends()可以接受一个数组作为参数,你可以通过Input::except('page'),这应该做的伎俩。

例:

return view('manage/users', [
    'users' => $users->appends(Input::except('page'))
]);

0
投票

也可以传递页码以进行分页。像这样的东西

$currentPg = Input::get('page') ? Input::get('page') : '1';
    $boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });

65
投票

我认为你应该在Laracasts提到的Laravel 5中使用这个代码。此外,这不仅适用于参数page,还适用于任何其他参数:

$users->appends(request()->input())->links();

我个人尽量避免使用Facades。使用全局辅助函数代码更少,更优雅。


38
投票

请注意Input::all(),它将在您打开的每个页面中反复包含以前的?page=值! 例如,如果你在?page=1并打开下一页,它将打开?page=1&page=2 因此,最后一个值页面将是您看到的页面!不是你想看的页面

解决方案:使用Input::except(array('page'))


26
投票

不是append()而是appends()所以,正确答案是:

{!! $records->appends(Input::except('page'))->links() !!}

17
投票

你可以用

->appends(request()->query())

控制器中的示例:

$users = User::search()->order()->with('type:id,name')
    ->paginate(30)
    ->appends(request()->query());

return view('users.index', compact('users'));

视图中的示例:

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

11
投票

拉瓦尔5

视图必须包含以下内容:

{!! $myItems->appends(Input::except('page'))->render() !!}


5
投票

使用这种结构,保持所有输入参数但页面

{!! $myItems->appends(Request::capture()->except('page'))->render() !!}

为什么?

1)你删除所有添加到请求的内容

  $request->request->add(['variable' => 123]);

2)您不需要$ request作为函数的输入参数

3)你排除“页面”

PS),它适用于Laravel 5.1


3
投票

在您的视图页面中包含此内容

 $users->appends(Input::except('page'))

1
投票

对于谁在laravel 5.3中的刀片:

{{ $table->appends(['id' => $something ])->links() }}

你可以得到传递的项目

$passed_item=$request->id;

测试它

dd($passed_item);

你必须得到一些价值

© www.soinside.com 2019 - 2024. All rights reserved.