Пагинация + URL-параметры в Laravel 7 - PullRequest
0 голосов
/ 13 апреля 2020

Если я go до http://app.test/visitor?interval=week, я увижу это

Issue ?

Как только я нажал на второй, я был перенаправлен на: 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

Нужно ли перезаписывать функцию нумерации страниц по умолчанию?

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Ваше решение работает, но есть встроенный метод для достижения желаемого результата в Laravel 7.

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

Вы можете увидеть, что ваша точная проблема решается в прилагаемом PR: https://github.com/laravel/framework/pull/31648

К вашему сведению, links() заменено render() in Laravel 5.3

0 голосов
/ 13 апреля 2020

Я думаю, что нашел ответ на это. Я обновил свой взгляд

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

до

{!! $ members-> appends (Request :: кроме ('page')) -> render () !!}

Это больше не заменяет мои текущие параметры URL.

...