Gok*_*nde 2 zend-framework zend-form
我有以下代码为密码创建一个字段.
// Element: password
$this->addElement('Password', 'password', array(
'label' => 'Password',
'description' => 'Passwords must be at least 6 characters long.',
'required' => true,
'allowEmpty' => false,
validators' => array(
array('NotEmpty', true),
array('StringLength', false, array(6, 32)),
)
));
$this->password->getDecorator('Description')->setOptions(array('placement' => 'APPEND'));
$this->password->getValidator('NotEmpty')->setMessage('Please enter a valid password.', 'isEmpty');
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我需要删除验证器,并根据某些条件使控制器"必需"为false.
例如:-
if($someCondition){
//Set required to false and remove validator here somehow
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道这种情况的解决方案?
如果您已在控制器中实例化您的表单,如下所示: -
$loginForm = new Application_Form_LoginForm();
Run Code Online (Sandbox Code Playgroud)
然后你可以设置密码(或任何其他)元素的属性,如下所示: -
if($someCondition){
$loginForm->Password->setRequired(false);
$loginForm->Password->setValidators(array());
}
Run Code Online (Sandbox Code Playgroud)
或者,当Zend_Form_Element::setRequired()返回Zend_Form_Element的实例时,您可以这样做: -
if($someCondition){
$loginForm->Password->setRequired(false)->setValidators(array());
}
Run Code Online (Sandbox Code Playgroud)