Какой самый идиоматичный способ разбить на страницы по результатам поиска, выполненного с использованием 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 работает из коробки.

Другие вопросы по тегам