Ссылки на страницы 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() }}
передайте номер страницы для разбиения на страницы. Некоторые вещи, как это
$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