Какой самый идиоматичный способ разбить на страницы по результатам поиска, выполненного с использованием zend_form
Я реализовал представление action +, которое перечисляет все строки в базе данных и позволяет разбивать их на страницы с помощью zend_paginator. Я также написал action + view, который принимает форму post (или get), создает запрос Solr и возвращает адаптер zend_paginator для просмотра результатов.
Проблема в том, что я разбираюсь в запросе после постбэка, это довольно сложная форма поиска (8 полей для поиска).
Варианты, насколько я вижу:
- Переместите параметры, которые публикуются на новый URL и перенаправьте
- Напишите мой собственный paginator, который сохраняет параметры строки запроса
- Сериализовать результаты поста формы в сеанс и получить его оттуда при разбивке на страницы
Какой из них является наиболее подходящим для Zend / php способом и, что более важно, наиболее быстрым в реализации? ПОМОГИТЕ!!!!! Благодарю.
1 ответ
Я не собираюсь принимать этот ответ, пока не убедлюсь, что ни у кого нет лучшего, но я пришел к решению. Я пошел на шаблон PRG (post-redirect-get).
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
return $this->_helper->redirector('index','contact',NULL,array_filter($form->getValues()));
}
}
Это перенаправляет на URL с содержимым формы в качестве параметров - www.url.com/form/param1/val/param2/val
Команда array_filter удаляет все пустые параметры, и это означает, что вы получите хороший чистый, удобный для закладок, оптимизированный для SEO URL-адрес, с которым zend_paginator работает из коробки.