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

时间:2013-06-18 01:24:16

标签: pagination laravel laravel-4 eloquent blade

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

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

刀片模板

{{ $users->link() }}

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

12 个答案:

答案 0 :(得分:102)

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

->appends()可以接受数组作为参数,您可以传递Input::except('page'),这应该可以解决问题。

示例:

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

答案 1 :(得分:63)

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

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

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

答案 2 :(得分:38)

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

解决方案:使用?page=1&page=2

答案 3 :(得分:26)

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

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

答案 4 :(得分:16)

您可以使用

->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() }}

答案 5 :(得分:11)

LARAVEL 5

视图必须包含以下内容:

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

答案 6 :(得分:6)

Laravel 7.x向分页器添加了新方法:

->withQueryString()

所以您可以像这样使用它:

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

对于低于7.x的laravel,请使用:

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

答案 7 :(得分:5)

使用此结构,保留所有输入参数但页面

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

为什么?

1)你删除了那些添加到请求中的所有内容

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

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

3)你排除了“页面”

PS),它适用于Laravel 5.1

答案 8 :(得分:3)

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

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

答案 9 :(得分:1)

laravel 5.3中的谁 在刀片中:

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

您可以通过以下方式获取通过的项目

$passed_item=$request->id;

使用

进行测试
dd($passed_item);

您必须获得$ something的价值

答案 10 :(得分:0)

也传递页码以进行分页。像这样的事情

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

答案 11 :(得分:0)

在Laravel 7.x中,您可以像这样使用它:

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