我和Laravel 4的Pagination课一起使用Eloquent。
问题:当URL中有一些GET参数时,例如:http://site.com/users?gender=female&body=hot
,生成的分页链接只包含page
参数而不包含任何其他参数。
刀片模板
{{ $users->link() }}
有一个->append()
函数,但是当我们不知道有多少GET参数时,我们如何使用append()
在分页链接中包含其他GET参数而没有一大堆if
代码搞乱我们的刀片模板?
编辑:Connor对Mehdi的答案的评论是必要的。感谢他们的澄清。
->appends()
可以接受一个数组作为参数,你可以通过Input::except('page')
,这应该做的伎俩。
例:
return view('manage/users', [
'users' => $users->appends(Input::except('page'))
]);
也可以传递页码以进行分页。像这样的东西
$currentPg = Input::get('page') ? Input::get('page') : '1';
$boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });
我认为你应该在Laracasts提到的Laravel 5中使用这个代码。此外,这不仅适用于参数page
,还适用于任何其他参数:
$users->appends(request()->input())->links();
我个人尽量避免使用Facades
。使用全局辅助函数代码更少,更优雅。
请注意Input::all()
,它将在您打开的每个页面中反复包含以前的?page=
值!
例如,如果你在?page=1
并打开下一页,它将打开?page=1&page=2
因此,最后一个值页面将是您看到的页面!不是你想看的页面
解决方案:使用Input::except(array('page'))
不是append()
而是appends()
所以,正确答案是:
{!! $records->appends(Input::except('page'))->links() !!}
你可以用
->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
视图必须包含以下内容:
{!! $myItems->appends(Input::except('page'))->render() !!}
使用这种结构,保持所有输入参数但页面
{!! $myItems->appends(Request::capture()->except('page'))->render() !!}
为什么?
1)你删除所有添加到请求的内容
$request->request->add(['variable' => 123]);
2)您不需要$ request作为函数的输入参数
3)你排除“页面”
PS),它适用于Laravel 5.1
在您的视图页面中包含此内容
$users->appends(Input::except('page'))
对于谁在laravel 5.3中的刀片:
{{ $table->appends(['id' => $something ])->links() }}
你可以得到传递的项目
$passed_item=$request->id;
测试它
dd($passed_item);
你必须得到一些价值