2013-06-18 3 views
45

Я использую Eloquent вместе с классом Pagination Laravel 4.Laravel Ссылки на страницы, не считая других параметров GET

Проблема: Когда есть некоторые параметры GET в URL, например: http://site.com/users?gender=female&body=hot, разбивки на страницы ссылки, полученные только содержат параметр и ничего page.

клинка Шаблон

{{ $users->link() }} 

Там в ->append() функция для этого, но, когда мы не знаем, сколько ГЭТ параметры там, как мы можем использовать append() включить другие параметры GET в с разбивкой по страницам без целого фрагмента кода if, испортившего наш шаблон клинка?

ответ

72

EDIT: комментарий Коннора с ответом Мехди обязателен для выполнения этой работы. Спасибо за их разъяснения.

->appends() может принимать массив в качестве параметра, вы можете пройти Input::except('page'), что должно сделать трюк.

Пример:

return view('manage/users', [ 
    'users' => $users->appends(Input::except('page')) 
]); 
+25

Просто к сведению для других Googlers ближайшие этот путь - это теперь множественное число 'appends' ** не **' append'. Правильная цепочка была бы чем-то вроде '$ query-> appends ($ foo) -> links();' –

+3

Я нашел '$ query-> appends (Input :: except ('page')) -> links(); 'работал лучше. В противном случае переменная страницы не обновлялась при нажатии на страницу. Ларавел 4.1.24. – bitlather

+0

... и затем я прокрутил вниз, чтобы увидеть решение Мехди. – bitlather

34

Будьте в курсе о Input::all(), он будет включать в себя предыдущие ?page= значения снова и снова на каждой странице, вы открываете!
например, если вы находитесь в ?page=1, и вы откроете следующую страницу, откроется ?page=1&page=2
Таким образом, последняя страница с ценной стоимостью будет отображаемой вами страницей! не страница, которую вы хотите увидеть

Решение: использовать Input::except(array('page'))

22

Не append() но appends() Таким образом, правильный ответ:

{!! $records->appends(Input::except('page'))->links() !!} 
10

Laravel 5

мнение должен содержать что-то вроде:

{!! $myItems->appends(Input::except('page'))->render() !!}

23

Я думаю, вы должны использовать этот код в Laravel 5, который Laracasts упоминает его. Кроме того, это будет работать не только с параметром page, но и с любым другим параметром (ами):

$users->appends(request()->input())->links(); 

Лично я стараюсь избегать использования Fecades столько, сколько я могу. Использование глобальных вспомогательных функций меньше кода и много элегантности.

4

Используйте эту конструкцию, чтобы сохранить все входные данные Params, но страница

{!! $myItems->appends(Request::capture()->except('page'))->render() !!} 

Почему?

1) вы раздеться все, что добавляемые просить подобное

$request->request->add(['variable' => 123]); 

2) Вам не нужно $ запрос в качестве входного параметра для функции

3) вы за исключением «страницы»

PS) и это работает для Laravel 5.1

0

Передайте номер страницы для пагинации, а также. Некоторые вещи, как этот

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

0

Вы можете использовать

->appends(request()->query()) 

Пример в контроллере:

$users = User::search()->order()->with('type:id,name') 
    ->paginate(30) 
    ->appends(request()->query()); 

return view('users.index', compact('users')); 

Пример в Vi ЭВ:

{{ $users->appends(request()->query())->links() }} 
1

Включите Это на ваш взгляд Страница

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

 Смежные вопросы

  • Нет связанных вопросов^_^