分页 + URL Laravel 7 中的参数
Pagination + URL Params in Laravel 7
如果我去http://app.test/visitor?interval=week,我会看到这个
问题
我一点击第二个,就被重定向到:http://app.test/visitor?page=2
它删除了我的 interval=week
,这破坏了我每周查看的查询视图。
代码
这就是我构建页面的方式
public function index()
{
$inputs = Request::all();
$interval = '';
if(array_key_exists('interval', $inputs)){
$interval = $inputs['interval'];
}
switch ($interval) {
case 'day':
$visitors = Visitor::where('created_at', '>', now()->today())->paginate(10);;
break;
case 'week':
$visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
break;
case 'month':
$visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
break;
case 'year':
$visitors = Visitor::where('created_at', '>', now()->subYear())->paginate(10);
break;
default:
$visitors = Visitor::orderBy('updated_at', 'desc')->paginate(10);
break;
}
return View::make('layouts.be.visitors.index', get_defined_vars());
}
查看
{!! $visitors->render() !!}
目标
就是保持同一个视图,像这样
http://app.test/visitor?interval=week&page=2
是否必须覆盖默认分页功能?
我该如何解决这个问题?
我想我找到了答案。我更新了我的观点
{!! $visitors->render() !!}
到
{!! $visitors->appends(Request::except('page'))->render() !!}
它不再替换我当前的 URL 参数。
您的解决方案有效,但有一个内置方法可以在 Laravel 7 中实现您想要的结果。
{{ $visitors->withQueryString()->links() }}
您可以在随附的 PR 中看到您的确切问题已得到解决:https://github.com/laravel/framework/pull/31648
仅供参考,links()
在 Laravel 5.3
中替换了 render()
如果我去http://app.test/visitor?interval=week,我会看到这个
问题
我一点击第二个,就被重定向到:http://app.test/visitor?page=2
它删除了我的 interval=week
,这破坏了我每周查看的查询视图。
代码
这就是我构建页面的方式
public function index()
{
$inputs = Request::all();
$interval = '';
if(array_key_exists('interval', $inputs)){
$interval = $inputs['interval'];
}
switch ($interval) {
case 'day':
$visitors = Visitor::where('created_at', '>', now()->today())->paginate(10);;
break;
case 'week':
$visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
break;
case 'month':
$visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
break;
case 'year':
$visitors = Visitor::where('created_at', '>', now()->subYear())->paginate(10);
break;
default:
$visitors = Visitor::orderBy('updated_at', 'desc')->paginate(10);
break;
}
return View::make('layouts.be.visitors.index', get_defined_vars());
}
查看
{!! $visitors->render() !!}
目标
就是保持同一个视图,像这样
http://app.test/visitor?interval=week&page=2
是否必须覆盖默认分页功能?
我该如何解决这个问题?
我想我找到了答案。我更新了我的观点
{!! $visitors->render() !!}
到
{!! $visitors->appends(Request::except('page'))->render() !!}
它不再替换我当前的 URL 参数。
您的解决方案有效,但有一个内置方法可以在 Laravel 7 中实现您想要的结果。
{{ $visitors->withQueryString()->links() }}
您可以在随附的 PR 中看到您的确切问题已得到解决:https://github.com/laravel/framework/pull/31648
仅供参考,links()
在 Laravel 5.3
render()