Я использую Eloquent вместе с классом Pagination в Laravel 4.
Проблема: когда в URL-адресе есть некоторые параметры GET, например:, http://site.com/users?gender=female&body=hot
созданные ссылки для разбивки на страницы содержат только page
параметр и ничего больше.
Шаблон Blade
{{ $users->link() }}
Для этого есть ->append()
функция, но если мы не знаем, сколько здесь параметров GET, как мы можем использовать append()
для включения других параметров GET в ссылки с разбивкой на страницы, чтобы целый кусок if
кода не испортил наш шаблон лезвия?
appends
, а неappend
. Правильная цепочка будет примерно такой$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
работает лучше. В противном случае переменная страницы не обновлялась при нажатии на страницу. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
Я думаю, вам следует использовать этот код в Laravel 5. Также это будет работать не только с параметром,
page
но и с любым другим параметром (ами):Лично я стараюсь не использовать
Facades
столько, сколько могу. Использование глобальных вспомогательных функций требует меньше кода и намного элегантнее.ОБНОВИТЬ:
Не используйте
Input
Facade, поскольку он устарел в Laravel v6 +источник
except('page')
это решение.Имейте в виду
Input::all()
, он будет?page=
снова и снова включать предыдущие значения на каждой странице, которую вы открываете!например, если вы находитесь внутри
?page=1
и открываете следующую страницу, она откроется.?page=1&page=2
Таким образом, последнее значение, которое принимает страница, будет той, которую вы видите! не та страница, которую ты хочешь увидеть
Решение: использовать
Input::except(array('page'))
источник
Вы могли бы использовать
Пример в контроллере:
Пример в представлении:
источник
Не
append()
ноappends()
Итак, правильный ответ:источник
ЛАРАВЕЛЬ 5
Представление должно содержать что-то вроде:
{!! $myItems->appends(Input::except('page'))->render() !!}
источник
Используйте эту конструкцию, чтобы сохранить все входные параметры, кроме страницы
Зачем?
1) вы убираете все, что добавлено в запрос таким образом
2) вам не нужен $ request в качестве входного параметра для функции
3) вы исключаете "страницу"
PS) и он работает для Laravel 5.1
источник
Laravel 7.x добавил новый метод в пагинатор:
Таким образом, вы можете использовать это как:
Для laravel ниже 7.x используйте:
источник
Включите это в свою страницу просмотра
источник
для тех, кто в laravel 5 или выше в blade:
вы можете получить пройденный предмет с
проверить это с
ты должен получить что-нибудь ценное
источник
Также передайте номер страницы для нумерации страниц. Что-то вроде этого
источник