Ссылки Laravel Pagination не включают другие параметры GET
Я использую Eloquent вместе с классом Pagination Laravel 4.
Проблема: Когда в URL-адресе есть некоторые параметры GET, например: http://site.com/users?gender=female&body=hot
, создаваемые ссылки на страницы содержат только параметр page
и ничего больше.
Шаблон клинка
{{ $users->link() }}
Для этого существует функция ->append()
, но когда мы не знаем, сколько из параметров GET существует, как мы можем использовать append()
для включения других параметров GET в разбитые на страницы ссылки без целого фрагмента if
код испортил наш шаблон клипа?
Ответы
Ответ 1
РЕДАКТОР: комментарий Коннора с ответом Мехди требуется для выполнения этой работы. Спасибо за их разъяснения.
->appends()
может принимать массив в качестве параметра, вы можете пройти Input::except('page')
, что должно сделать трюк.
Пример:
return view('manage/users', [
'users' => $users->appends(Input::except('page'))
]);
Ответ 2
Я думаю, что вы должны использовать этот код в Laravel 5.
Также это будет работать не только с параметром page
, но и с любым другим параметром (ами):
$users->appends(request()->input())->links();
Лично я стараюсь не использовать Facades
как можно больше. Использование глобальных вспомогательных функций менее затратно и изящно.
UPDATE:
Не используйте фасад Input
, так как он устарел в Laravel v6+
Ответ 3
Помните Input::all()
, он будет включать предыдущие значения ?page=
снова и снова на каждой странице, которую вы открываете!
например, если вы находитесь в ?page=1
, и вы откроете следующую страницу, он откроется ?page=1&page=2
Таким образом, последняя страница значения будет отображать страницу, которую вы видите! а не страницу, которую вы хотите увидеть
Решение: используйте Input::except(array('page'))
Ответ 4
Не append()
, но appends()
Итак, правильный ответ:
{!! $records->appends(Input::except('page'))->links() !!}
Ответ 5
Вы можете использовать
->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() }}
Ответ 6
LARAVEL 5
В представлении должно быть что-то вроде:
{!! $myItems->appends(Input::except('page'))->render() !!}
Ответ 7
Используйте эту конструкцию, чтобы сохранить все входные параметры, кроме страницы
{!! $myItems->appends(Request::capture()->except('page'))->render() !!}
Почему?
1) так вы убираете все, что добавлено в запрос
$request->request->add(['variable' => 123]);
2) вам не нужен $ request в качестве входного параметра для функции
3) вы исключаете "страницу"
PS) и это работает на Laravel 5.1
Ответ 8
Включите это в свой взгляд
Страница
$users->appends(Input::except('page'))
Ответ 9
для того, кто один в Laravel 5.3
в клинке:
{{ $table->appends(['id' => $something ])->links() }}
вы можете получить переданный элемент с помощью
$passed_item=$request->id;
проверить это с помощью
dd($passed_item);
вы должны получить $ что-то значение
Ответ 10
Пропустите номер страницы для разбивки на страницы. Что-то вроде этого
$currentPg = Input::get('page') ? Input::get('page') : '1';
$boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });