Laravel 7中的分页+ URL参数

问题描述 投票:0回答:2

如果我去http://app.test/visitor?interval=week,我会看到此

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9lSTZ4RkoyLnBuZyJ9” alt =“”>

问题🐞

单击第二个按钮后,我便被重定向到:http://app.test/visitor?page=2

enter image description here

它删除了我的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

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

我该如何解决此问题?

php laravel pagination url-parameters laravel-7
2个回答
0
投票

我想我找到了答案。我更新了视图

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

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

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


0
投票

您的解决方案有效,但是在Laravel 7中有内置的方法可以实现所需的结果。

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

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

FYI,links()替换了Laravel 5.3中的render()

© www.soinside.com 2019 - 2024. All rights reserved.