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 61

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() }}

Включить Это В Вашем Представлении Страница

 $users->appends(Input::except('page'))

передать номер страницы для разбиения на страницы, а также. Что-то вроде этого

$currentPg = Input::get('page') ? Input::get('page') : '1';
    $boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });

для кого один в laravel 5.3 в лезвии:

{{ $table->appends(['id' => $something ])->links() }}

вы можете получить переданный товар с

$passed_item=$request->id;

проверьте его с

dd($passed_item);

вы должны получить $то значение