Nyx*_*nyx 84 pagination laravel eloquent blade laravel-4
我和Laravel 4的Pagination课一起使用Eloquent.
问题:当URL中有一些GET参数时,例如:http://site.com/users?gender=female&body=hot,生成的分页链接只包含page参数而没有其他内容.
刀片模板
{{ $users->link() }}
Run Code Online (Sandbox Code Playgroud)
有一个->append()功能,但是当我们不知道有多少GET参数时,我们怎样才能append()在分页链接中包含其他GET参数而不if会让我们的刀片模板搞乱一大堆代码?
Ale*_*ult 109
编辑:Connor对Mehdi的答案的评论是必要的.感谢他们的澄清.
->appends()可以接受一个数组作为参数,你可以通过Input::except('page'),这应该做的伎俩.
例:
return view('manage/users', [
'users' => $users->appends(Input::except('page'))
]);
Run Code Online (Sandbox Code Playgroud)
Has*_*imi 81
我认为你应该在Laracasts提到的Laravel 5中使用这个代码.此外,这不仅适用于参数page,还适用于任何其他参数:
$users->appends(request()->input())->links();
Run Code Online (Sandbox Code Playgroud)
我个人尽量避免Facades尽可能多地使用.使用全局辅助函数代码更少,更优雅.
Meh*_*oni 40
要注意的Input::all(),这将包括以前?page=在每次打开页面连连值!
例如,如果你在,?page=1并打开下一页,它将打开?page=1&page=2
所以最后一个值页面将是你看到的页面!不是你想看的页面
解决方案:使用 Input::except(array('page'))
Bal*_*ald 28
不是append(),appends()
所以,正确答案是:
{!! $records->appends(Input::except('page'))->links() !!}
Run Code Online (Sandbox Code Playgroud)
Ale*_*ich 27
你可以用
->appends(request()->query())
Run Code Online (Sandbox Code Playgroud)
控制器中的示例:
$users = User::search()->order()->with('type:id,name')
->paginate(30)
->appends(request()->query());
return view('users.index', compact('users'));
Run Code Online (Sandbox Code Playgroud)
视图中的示例:
{{ $users->appends(request()->query())->links() }}
Run Code Online (Sandbox Code Playgroud)
Shr*_*esh 19
Laravel 7.x 及以上版本为 paginator 添加了新方法:
->withQueryString()
Run Code Online (Sandbox Code Playgroud)
所以你可以像这样使用它:
{{ $users->withQueryString()->links() }}
Run Code Online (Sandbox Code Playgroud)
对于低于 7.x 的 Laravel,请使用:
{{ $users->appends(request()->query())->links() }}
Run Code Online (Sandbox Code Playgroud)
Mir*_*ker 11
在分页后的控制器中添加 withQueryString() 如下所示
$post = Post::paginate(10)->withQueryString();
Run Code Online (Sandbox Code Playgroud)
使用这种结构,保持所有输入参数但页面
{!! $myItems->appends(Request::capture()->except('page'))->render() !!}
Run Code Online (Sandbox Code Playgroud)
为什么?
1)你删除所有添加到请求的内容
$request->request->add(['variable' => 123]);
Run Code Online (Sandbox Code Playgroud)
2)您不需要$ request作为函数的输入参数
3)你排除"页面"
PS),它适用于Laravel 5.1
| 归档时间: |
|
| 查看次数: |
73893 次 |
| 最近记录: |