2012-03-01 1 views
1

Zend_Form 객체에서 사용자 정의 유효성 검사기 메시지를 설정하는 방법을 알 수 없습니다. 다음은 예제 코드입니다.Zend_Form에서 사용자 정의 유효성 검사기 메시지를 설정할 수 없습니다.

$this->addElement('password', 'password', array(
     'label'  => 'Password', 
     'decorators' => array('ViewHelper'), 
     'filters' => array('StringTrim'), 
     'validators' => array(
      array('Digits', false, array('messages' => array('notDigits' => 'Only digits are allowed here'))) 
     ), 
     'required' => true 

    )); 

유효하지 않은 데이터를 입력하는 양식의 유효성을 검사하려고하면 "notDigits"라는 메시지가 나타납니다. 나는 'notDigits'를 Zend_Validate_Digits :: NOT_DIGITS로 변경하려고 시도했지만 여전히 예상대로 작동하지 않습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

2

오류가 발견되었습니다. 컨트롤러에서 $ form-> getMessages() 대신 $ form-> getErrors() 메서드를 사용했기 때문에 notDigits 메시지를 수신했습니다. 첫 번째 메시지는 메시지없이 오류 코드 만 반환합니다.

1

사용자 지정 메시지를 설정하는 구문이 정확합니다. 게시 한 코드 예제에서 해당 요소의 유일한 장식자는 ViewHelper이므로 오류 메시지가 표시되지 않습니다.

적어도 오류 메시지를보고 싶다면 Errors 데코레이터를 추가하십시오. 이 시도 :

$this->addElement('password', 'code', array(
    'label'  => 'Code', 
    'decorators' => array('ViewHelper', 'Errors'), 
    'filters' => array('StringTrim'), 
    'validators' => array(
     array('Digits', false, 
      array('messages' => array('notDigits' => 'Only digits are allowed here'))) 
    ), 
    'required' => true 
); 

유일한 변화는 스택에 Errors 장식을 추가했다.

+0

답장을 보내 주셔서 감사합니다. 내가 $ form-> getErrors() 메서드를 사용하여 컨트롤러에서 오류를 캡처하기 때문에 에러 장식자를 사용하지 않기 때문에 별도의 DIV에 표시 할 수 있습니다. 오류가 올바르게 표시되지만 번역이 적용되지 않습니다. – stefan

0

이 유효성 검사기 구문을 사용해보십시오.

$this->addElement("text", "fullname", array(
         'label' => 'Your Full Name: ', 
         'required' => 'true', 
         'validators' => array(
          array('validator' => 'StringLength', 'options' => array('min'=>5, 'max'=>250, 'messages' => array('stringLengthTooShort' => 'The name is too short.'))) 
         ), 
         'filters' => array('StringTrim'), 
         'decorators' => array("signup") 
        ));