2009-11-10 76 views
5

我使用Zend Form来创建动态表单。Zend表单验证

我也有Zend Form验证。

试图动态移除验证,但没有取得任何成功。

你可以plz帮我删除Zend验证。

贝娄是我删除验证码:

$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'); 
      } 
     } 
    } 
} 

让我知道我的代码是否有任何问题

感谢 穆罕默德Tareque

回答

4

您应该删除验证通话$ form-> isValid()

1

你的代码是由名

$value->removeValidator('ele_4af42ceac7810'); 

删除验证这通常是像NotEmptyRegex,而不是元素名称。

也许你想

$value->clearValidators(); 

此外,一伊斯梅尔 - 你应该在调用$form->isValid()

3

我想出了覆盖在我的窗体类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被称为形式b eing由组合扩展而来,这个解决方案在扩展一个Zend Form后代类时也起作用。

只是一个侧面说明,如果需要密码字段该解决方案将无法​​工作