2009-11-10 13 views
5

젠드 폼을 사용하여 동적 폼을 만듭니다.젠드 폼 유효성 검사

젠드 폼 유효성 검사도 있습니다.

유효성 검사를 동적으로 제거하려고 시도했지만 성공하지 못했습니다.

Zend Validation을 제거하는 데 도움을 줄 수 있습니까?

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

하여 검증을 제거하고이 일반적으로 NotEmpty 또는 요소 이름에 반대 Regex 같은 것입니다. 당신은 $form->isValid()

3

내 폼 클래스에 isValid 메서드를 재정의하고, 제거 된 해낸 해결책을 호출하기 전에이 소프트웨어를 제거해야합니다 -

은 아마 당신은 또한

$value->clearValidators(); 

, +1 이스마엘합니다 암호 필드에 대한 검증은 비워 둘 경우 :

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라고 컴포지션으로 확장 된이 솔루션은 Zend Form 하위 클래스도 확장 할 때 작동합니다.

그냥 보조 노트는이 솔루션 암호 필드가 필요 경우 작동하지 않습니다