во всех примерах Zend_Form, которые я нахожу, представление, показывающее форму, соответствует действию, в котором она обрабатывается. Однако мне нужно представление, которое отображает несколько независимых форм и отдельных действий для обработки каждой из форм (чье представление не используется).
Перенаправление на отдельные действия не является проблемой, формы обрабатываются там, но когда появляются ошибки проверки, я хочу, чтобы они отображались в общем представлении рядом с каждым элементом в стиле Zend_Form. Как я понимаю, при заполнении формы (с неверными данными) ошибки отображаются автоматически. Затем, когда форма недействительна, я использую FlashMessenger для хранения недопустимого содержимого, затем перенаправляюсь на основное общее действие и заполняю форму им.
Проблема возникает с полями пароля. Они, конечно, отказываются заполняться, и поэтому не показывают никаких сообщений об ошибках. Могу ли я отобразить это без необходимости вручную выяснить, какая ошибка произошла?
Спасибо за ваше внимание и терпение с моим английским: P
PS: Для лучшего понимания я добавляю пример кода, объясняющего, что я делаю ...
class TestController extends Zend_Controller_Action
{
...
public function commonAction() {
/*Initialize form objects*/
$form1 = new Application_Form_Form1();
...
$formN = new Application_Form_FormN();
/*Fill forms if needed*/
$flashMess = $this->_helper->FlashMessenger;
if ($flashMess->hasMessages()) {
$messages = $flashMess->getMessages();
switch ($messages[1]) {
case 'form1':
$form1->populate($messages[0]);
break;
...
case 'formN':
$fotmN->populate($messages[0]);
break;
default:
...
break;
}
}
/*Assign to the view*/
$this->view->form1 = $form1;
...
$this->view->formN = $formN;
}
public function form1Action() {
if ($this->getRequest()->isPost()) {
$form1 = new Application_Form_Form1();
$data = $this->getRequest()->getPost();
if ($form1->isValid($data)) {
...
} else {
$this->_helper->FlashMessenger($data);
$this->_helper->FlashMessenger('form1');
}
}
$this->redirect('/test/common');
}
...
}