【问题标题】:Pagination + URL Params in Laravel 7Laravel 7 中的分页 + URL 参数
【发布时间】:2020-07-26 08:42:36
【问题描述】:

如果我去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

我必须覆盖默认的分页功能吗?

我该如何解决这个问题?

【问题讨论】:

  • 我很确定问题出在前端,当您在分页中按下#2 页面时,您必须将间隔查询字符串注入每个分页按钮的末尾。你用什么做你的前端?我很确定你将不得不使用一些 js 来做到这一点。
  • @RobertKujawa,Laravel 7 神奇地为我们做到了这一点。 FE上不需要手动JS代码,反正我找到了答案。
  • 好的,很高兴你找到了解决方案!

标签: php laravel pagination url-parameters laravel-7


【解决方案1】:

您的解决方案有效,但在 Laravel 7 中有一个内置方法可以实现您想要的结果。

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

您可以在随附的 PR 中看到您正在解决的确切问题:https://github.com/laravel/framework/pull/31648

仅供参考,links() 在 Laravel 5.3 中替换了 render()

【讨论】:

  • 好的,我将继续使用链接。感谢您的提示;
【解决方案2】:

我想我找到了答案。我更新了我的观点

{!! $visitors->render() !!}

到

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

它不再替换我当前的 URL 参数。

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 2020-08-13
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多