Laravel Pagination links не включая другие параметры 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() }}