Ссылки на страницы Laravel, не включая другие параметры GET

Я использую Eloquent вместе с классом разбиения на страницы Laravel 4.

: когда есть некоторые параметры GET в URL, например:http://site.com/users?gender=female&body=hot, созданные ссылки на страницы содержат только page параметр и больше ничего.

Шаблон Лезвие

{{ $users->link() }}

здесь ->append() функция для этого, но когда мы не знаем, сколько параметров GET есть, как мы можем использовать append() включить другой GET параметры в разбитых на страницы ссылках без целого куска if код испортил наш шаблон лезвия?

10 ответов


EDIT: комментарий Коннора с ответом Мехди требуется, чтобы сделать эту работу. Спасибо обоим за разъяснения.

->appends() может принимать массив в качестве параметра, можно передать Input::except('page'), это должно сделать трюк.

пример:

return view('manage/users', [
    'users' => $users->appends(Input::except('page'))
]);

Я думаю, вы должны использовать этот код в Laravel 5, который Laracasts упоминает об этом. Также это будет работать не только с параметром page но и с любым другим параметром (- АМИ):

$users->appends(request()->input())->links();

лично я стараюсь избегать использования Facades столько, сколько смогу. Использование глобальных вспомогательных функций меньше кода и намного элегантнее.


помните на Input::all(), Он будет включать в себя предыдущий ?page= значения снова и снова на каждой открываемой странице !
например, если вы находитесь в ?page=1 а вы открываете следующую страницу, она откроется ?page=1&page=2
таким образом, последняя страница значения будет страница, которую вы видите ! не страница, которую вы хотите увидеть

решение : используйте Input::except(array('page'))


не append() но appends() Итак, правильный ответ:

{!! $records->appends(Input::except('page'))->links() !!}

фреймворк Laravel 5

представление должно содержать что-то вроде:

{!! $myItems->appends(Input::except('page'))->render() !!}


использовать эту конструкцию, чтобы сохранить все входные параметры, но страницы

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

почему?

1) вы снимаете все, что добавлено в запрос, как это

  $request->request->add(['variable' => 123]);

2) вам не нужен $request в качестве входного параметра для функции

3) Вы исключаете "страницу"

PS), и он работает для Laravel 5.1


можно использовать

->appends(request()->query())

пример в контроллер:

$users = User::search()->order()->with('type:id,name')
    ->paginate(30)
    ->appends(request()->query());

return view('users.index', compact('users'));

пример в виде:

{{ $users->appends(request()->query())->links() }}

Включите Это В Свое Представление Страница

 $users->appends(Input::except('page'))

передайте номер страницы для разбиения на страницы. Некоторые вещи, как это

$currentPg = Input::get('page') ? Input::get('page') : '1';
    $boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });

Для кто один в laravel 5.3 в blade:

{{ $table->appends(['id' => $something ])->links() }}

вы можете получить пройденный элемент с

$passed_item=$request->id;

проверьте его с

dd($passed_item);

вы должны получить $something value