zend_form: я должен использовать одно право в макете - PullRequest
2 голосов
/ 10 октября 2010

Я обычно создаю экземпляры своих форм в действии, и именно там я их обрабатываю, когда они отправляются.Затем я передаю их в представление и выводю их как обычно.

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

$search = new SearchForm(); 
echo $search;

Форма распечатывается нормально, но теперь вопрос в том, где мне обращаться с этой формой.У меня обычно есть код, подобный этому, в действии ..

    if ($this->_request->isPost()) {
        //and form is valid
        //process the data            
    }

, но поскольку эта форма универсальна, для нее нет действия.Как мне справиться с этим?

Должен ли я:

  • создать для него фиктивное действие (что не имеет смысла, потому что форма везде)
  • или я должен поместить код обработкипрямо в layout.phtml (который я считаю плохой практикой MVC, потому что я сейчас смешиваю обработку формы с представлением).

Что мне делать?Любой совет по этому поводу?

1 Ответ

5 голосов
/ 10 октября 2010

Конечно, поиску понадобится некоторый код обработки для построения результатов, поэтому я бы создал это действие где-то универсальным (как в вашем IndexController) и указал на форму.Даже если форма находится на каждой странице, совершенно нормально, чтобы вы указали ее на конкретный URL-адрес, например /search/.

В противном случае вы можете создать плагин контроллера, который проверяет запрос на предмет его отправки,и затем запускает код обработки.

...