2013-04-13 1 views
0

는 일반적으로이 작업을 수행 :이 Zend_Form NotEmpty 검사기가 왜 오류 메시지를 표시합니까? I 필수 젠드 양식 요소에 대한

$this->addElement('text', 'loginEmail'); 
$this->loginEmail 
     ->setLabel('Email') 
     ->setRequired(true); 

나는 비록 오류 메시지가 불만이었다. 젠드 문서는 setRequired() 단지 체인으로는 NotEmpty 검사기를 추가 있다고, 그래서 이런 짓을 :

$validator = new Zend_Validate_NotEmpty(); 
    $validator->setMessage('A value is required'); 

    $this->addElement('text', 'loginEmail'); 
    $this->loginEmail 
      ->setLabel('Email')     
      ->addValidator($validator); 

을하지만 지금은 그 요소에 대한 오류 메시지를받지 못했습니다!

답변

0

좋아, 그럼 내 질문에 대한 답변을 얻지 못했지만 setRequired() 검사기는 복잡한 작은 동물이며 아마도 젠드 팀의 자랑스러운 순간이 아님을 알게되었습니다. 그래서 위의 질문에 대한 답을 찾기보다는 setRequired에 대한 접근법을 발견했습니다. 이는 꽤 잘 작동합니다. 여기있다 :

$this->addElement('text', 'orgName'); 
    $this->orgName 
      ->setLabel('Name') 
      ->addFilter('StringTrim')     
      ->addValidator('NotEmpty', true, array(
       'messages' => 'Name is required'))     
      ->setRequired(true) 
      ->addValidator('Alnum', false, array(
       'allowWhiteSpace' => true, 
       'messages'   => 'Alpha and numeric characters only')) 
      ->addValidator('StringLength', false, array(
       'min'  => 3, 
       'max'  => 128, 
       'messages' => 'Between 3 and 128 characters'));   

중요한 것은는 NotEmpty 검사기를 추가하고 setRequired를 호출하기 전에 을 구성하는 것입니다. setRequired가 호출되면 NotEmpty 유효성 검사기가 이미 체인에 추가되어 자체 인스턴스를 추가하지 않음을 감지합니다.

관련 문제