Php Zend表单验证
我正在使用Zend表单创建动态表单 我也有Zend表单验证 尝试动态删除验证,但未获得任何成功 你能帮我删除Zend验证吗 下面是我的删除验证代码:Php Zend表单验证,php,zend-framework,zend-form,zend-validate,Php,Zend Framework,Zend Form,Zend Validate,我正在使用Zend表单创建动态表单 我也有Zend表单验证 尝试动态删除验证,但未获得任何成功 你能帮我删除Zend验证吗 下面是我的删除验证代码: $toRemValArray = array(); $toRemValArray[0] = 'ele_4af42ceac7810'; if(isset($_POST['btnPost_x'])){ if ($form->isValid($_POST)) { $allElements
$toRemValArray = array();
$toRemValArray[0] = 'ele_4af42ceac7810';
if(isset($_POST['btnPost_x'])){
if ($form->isValid($_POST)) {
$allElements = $form->getElements();
foreach($allElements as $val){
if(in_array('ele_4af42ceac7810',$toRemValArray)){
$value = $form->getElement($val->getName());
$value->removeValidator('ele_4af42ceac7810');
}
}
}
}
让我知道我的代码是否有任何问题
谢谢
Mohammad Tareque在调用$form->isValid()之前,您应该删除验证器您的代码正在按名称删除验证器
$value->removeValidator('ele_4af42ceac7810');
这通常类似于NotEmpty
或Regex
,而不是元素名
也许你想要
$value->clearValidators();
另外,+1 Ismael-您应该在调用
$form->isValid()
之前删除它。我提出的解决方案是在我的表单类上重写isValid
方法,如果密码字段为空,则删除密码字段上的验证器:
public function isValid($data)
{
if (empty($data['password'])) {
$this->form
->getElement('password')
->clearValidators();
$this->form
->getElement('password_confirm')
->clearValidators();
}
return $this->form->isValid($data);
}
$this->form
是指通过组合进行扩展的表单,该解决方案在扩展Zend form子类时也能起作用
请注意,如果密码字段是必需的