2013-08-08 3 views
1

У меня проблемы с сохранением параметров поиска при нажатии на ссылку для разбивки на страницы. Например, если поисковый запрос возвращает 40 записей, и у меня есть две страницы, щелчок на второй странице возвращает вторую страницу полного набора записей вместо 40, которые были возвращены поиском.Laravel pagination с параметрами поиска

Вот postIndex() от моего контроллера:

public function postIndex(){ 

    $validator = Validator::make(
     Input::all(), 
     array('priceMin' => array('numeric'), 
      'priceMax' => array('numeric') 
      ) 
    ); 

    if ($validator->fails()){ 
     return Redirect::to('items')->withInput()->withErrors($validator); 
    } else { 
     return Redirect::to('items')->withInput(); 
    } 
} 

И мой getIndex():

public function getIndex(){ 

    $items= $this->retriever->getListings(Input::old(), 20); 

    return View::make('listings', array('items' => $items); 
} 

Затем объект retriever петли через старый вход и находит все действительные параметры поиска, запросов к базе данных с их, и в этом случае указывается указанная сумма, 20.

Я пытался использовать ->appends() но данные не в Input::old() и это делает для ужасном URL, если есть 10 параметров поиска, поскольку она использует GET и не POST. Как я могу использовать мои параметры для ссылок на страницы?

ответ

5

Я бы никогда не использовал запрос POST для фильтрации/сортировки/поиска !!! Это просто неправильно

В общем случае, если пользователь пытается перезагрузить страницу (страницу результатов поиска), на которую были отправлены некоторые данные (параметры поиска), браузер спрашивает, следует ли перезагружать и повторно отправлять эти данные. Я не должен сказать, это раздражает, по крайней мере.

Решение: придерживаться метода Laravel и использовать appends(), несмотря на то, что он генерирует «уродливый» URL-адрес - это общее решение, независимо от структуры.

+1

Вы также можете сохранить параметры поиска в своей базе данных и использовать только идентификатор поиска и страницу в URL-адресе. Больше работы, но чисто :) –

+0

Да, это тоже решение. Таким образом, вы можете узнать, что ищут пользователи и т. Д. – Andreyco

+0

Yup, это то, что я недавно сделал, так как я изначально делал это, как вы. Однако я не сохраняю поисковые запросы. Вероятно, это скоро произойдет. –