Laravel分页链接不包括其他GET参数
我和Laravel 4的分页课一起使用了雄辩。
问题:如果URL中有一些GET参数,例如: http://site.com/users?gender=female&body=hot
://site.com/users?gender=female&body=hot,则生成的分页链接仅包含page
参数,不包含其他内容。
刀片模板
{{ $users->link() }}
这里有一个->append()
函数,但是当我们不知道有多less个GET参数时,我们如何使用append()
将其他GET参数包含在分页链接中,而不是整个块代码搞乱了我们的刀片模板?
编辑:康纳的评论与Mehdi的答案是必要的,使这项工作。 感谢他们的澄清。
->appends()
可以接受一个数组作为参数,你可以通过Input::except('page')
,这应该做的伎俩。
例:
return view('manage/users', [ 'users' => $users->appends(Input::except('page')) ]);
请注意 Input::all()
,它将在您打开的每个页面中一次又一次地包含前一个?page=
值!
例如,如果您在?page=1
并打开下一页,它将打开?page=1&page=2
所以最后一个值页面将是您看到的页面! 而不是你想看到的页面
解决scheme:使用Input::except(array('page'))
不append()
但appends()
所以,正确的答案是:
{!! $records->appends(Input::except('page'))->links() !!}
我想你应该使用Laravel提到的Laravel 5中的代码。 这也不仅适用于参数page
而且适用于其他任何参数:
$users->appends(request()->input())->links();
我个人尽量避免使用Fecades
。 使用全局帮助函数代码less,优雅。
LARAVEL 5
该视图必须包含以下内容:
{!! $myItems->appends(Input::except('page'))->render() !!}
使用这个结构“
{!! $myItems->appends(Request::capture()->except('page'))->render() !!}
为什么?
1)你删除所有添加到请求那样的东西
$request->request->add(['variable' => 123]);
2)你不需要$ request作为函数的input参数
3)你不包括“页面”
PS),它适用于Laravel 5.1
传递分页的页码。 有些事情是这样的
$currentPg = Input::get('page') ? Input::get('page') : '1'; $boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });