Какой самый идиоматичный способ разбить на страницы по результатам поиска, выполненного с использованием zend_form - PullRequest
3 голосов
/ 10 июня 2011

Я реализовал представление action +, которое перечисляет все строки в базе данных и позволяет разбивать их на страницы с помощью zend_paginator. Я также написал action + view, который принимает форму post (или get), создает запрос Solr и возвращает адаптер zend_paginator для постраничного просмотра результатов.

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

Варианты, насколько я вижу:

  • Переместить параметры, которые публикуются на новый URL и перенаправить
  • Напиши мой собственный paginator, который сохраняет запрос строковые параметры
  • Сериализация Результаты формы сообщения в сеанс и получить его оттуда, когда постраничный

Какой из них является наиболее подходящим для Zend / php способом - и, что более важно, наиболее быстрым в реализации? ПОМОГИТЕ!!!!! Спасибо.

1 Ответ

2 голосов
/ 13 июня 2011

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

...