【发布时间】:2015-04-17 04:44:11
【问题描述】:
我有一个表格说:
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');
为了显示相同的表单但有错误让用户重新输入正确的值。 问题是我不知道如何让表单必须显示验证错误的编辑操作知道?
在 $this->_helper->redirector('edit', 'user-details');表格重新显示 作为已清除错误的新表单,但我需要显示它们。
我这样做是否正确?
问候 汤姆
【问题讨论】:
标签: forms validation zend-framework