У меня есть форма сказать:ZEND: Отображение формы сообщений об ошибках на неудачной проверки
class Application_Form_UserDetails extends Zend_Form
{
public function init()
{
$pswd = new Zend_Form_Element_Password('password');
$pswd->setLabel('New password:');
$pswd->setAttrib('size', 25);
$pswd->setRequired(false);
$pswd->addValidator('StringLength', false, array(4,15));
$pswd->addErrorMessage('Wron password');
}
}
В моих сведений о пользователе класс контроллера у меня есть:
class UserDetailsController extends Zend_Controller_Action {
public function editAction()
{
$userId = $this->userInfo->id;
$DbTableUsers = new Application_Model_DbTable_User;
$obj = $DbTableUsers->getUserDetails($userId);
$this->view->formUser = new $this->_UserDetails_form_class;
$this->view->formCompany = new $this->_CompanyDetails_form_class;
if ($obj) {
$this->view->formUser->populate($obj);
}
$url = $this->view->url(array('action' => 'update-user-details'));
$this->view->formUser->setAction($url);
}
public function updateUserDetailsAction()
{
$formUser = new $this->_UserDetails_form_class;
if ($formUser->isValid($this->getRequest()->getPost())) {
}
else {
//validation failed
$formUser->markAsError();
$this->view->formUser = $formUser;
$this->_helper->redirector('edit', 'user-details');
}
}
}
Первый раз Редактировать действие называется формой встроенный и отображаемый. Пользователь заполняет форму и отправляет ее (вызывается updateUserDetailsAction). В updateUserDetailsAction, при ошибке проверки. Я отмечаю форму как имеющую ошибки и хочу отобразить форму с сообщениями об ошибках, которые я ранее задал в классе updateUserDetailsAction.
Затем я перенаправляю: $ this -> _ helper-> redirector ('edit', 'user-details');
, чтобы отобразить ту же форму, но с ошибками для повторного ввода правильных значений. Проблема в том, что я не знаю, как сообщить о действии редактирования, что форма должна отображать ошибки проверки?
On $ this -> _ helper-> redirector ('edit', 'user-details'); форма перерисовывается как новая форма с очищенными erros, но мне нужно, чтобы они отображались.
Я делаю это правильно?
С уважением Томом
Нет ли другого «элегантного» способа, чем комбинирование этих двух методов? Я новичок в ZEND и хочу использовать лучшие практики. Так ли это должно быть сделано с отображением ошибок проверки? Я подумал об этом, но не был уверен. – Tom
Я обновил ответ: я думаю, что это гораздо более компактное решение, меньше кода, который находится в одном месте. –
Большое спасибо! Работает как шарм. – Tom