Подтвердить что ты не робот

Ссылки 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 код испортил наш шаблон клипа?

4b9b3361

Ответ 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); });