2012-11-12 3 views
4

가능한 중복 :
zendframework 2 inputfilter customize default error messageZend Framework 2의 Zend Validator Identical에서 사용자 정의 'isEmpty'오류 메시지를 반환하려면 어떻게해야합니까?

내가 등록 양식에서 입력의 유효성을 검사 젠드 \ InputFilter \ InputFilter를 사용하는 것을 시도하고있다. 그 코드는 다음과 같습니다.

  1. '이메일'필드에서 이메일 주소의 유효성을 검사합니다.
  2. 'email_confirm'의 값이 'email'의 값과 일치하는지 확인합니다.

사용자가 두 입력란을 비워 둘 때를 제외하고 모든 경우에 적용됩니다. 해당 인스턴스에서 'email_confirm'에 대한 유효성 검사기는 오류 Array ([isEmpty] => Value is required and can't be empty)을 반환합니다.

어떻게이 오류 메시지를 사용자 정의합니까? 내가 사용하여 설정할 수 없습니다 :

'messages' => array(
    'isEmpty' => 'Message Here' 
), 

을 그 (아주 바르게)라고 예외가 발생하기 때문에 동일한 젠드 \ 검사기 \ '는 IsEmpty 함수'에 대한 메시지 템플릿을 가지고 있지 않습니다. 그리고 '이메일'필드에 대해 이전에 설정 한 메시지를 가져 오지 않습니다. 그렇지 않으면 Array ([isEmpty] => Please enter your email address)이 반환됩니다.

array(
    'name' =>'NotEmpty', 
     'options' => array(
      'messages' => array(
       \Zend\Validator\NotEmpty::IS_EMPTY => 'Please enter your email address' 
     ), 
    ), 
), 

당신은 더 정보를 위해 API을 확인할 수 있습니다 :

$this->add($inputFactory->createInput(array(
    'name' => 'email', 
    'required' => true, 
    'filters' => array(
     array('name' => 'StripTags'), 
     array('name' => 'StringTrim'), 
    ), 
    'validators' => array(
     array(
      'name' =>'NotEmpty', 
      'options' => array(
       'messages' => array(
        'isEmpty' => 'Please enter your email address' 
       ), 
      ), 
     ), 
     array(
      'name' => 'StringLength', 
      'options' => array(
       'encoding' => 'UTF-8', 
       'max' => 200, 
       'messages' => array(
        'stringLengthTooLong' => "Email addresses cannot be more than 200 characters" 
       ), 
      ), 
     ), 
     array(
      'name' =>'EmailAddress', 
      'options' => array(
       'useMxCheck' => true, 
      ), 
     ),     
    ), 
))); 

$this->add($inputFactory->createInput(array(
    'name' => 'email_confirm', 
    'required' => true, 
    'filters' => array(
     array('name' => 'StripTags'), 
     array('name' => 'StringTrim'), 
    ), 
    'validators' => array(
     array(
      'name' => 'Identical',       
      'options' => array(
       'token' => 'email', 
       'messages' => array(
        'notSame' => "Your email addresses do not match, please try again", 
       ), 
      ), 
     ),    
    ), 
))); 

감사합니다, 닐

답변

0

당신은 Zend\Validator\NotEmpty::IS_EMPTY 일정이 방법을 사용해야합니다. 젠드 \ 검사기 \는 NotEmpty 소스 코드에

편집

다이빙 나는 IS_EMPTY 상수 'isEmpty' 값을 갖는 것을 볼, 그래서 문제가 해결되지 않습니다. 어쨌든 은 가능한 업데이트 문제를 피하기 위해 직접 값 대신이 상수를 사용해야합니다.

+0

나는 작동하지 않을까 두렵습니다. \ Zend \ Validator \ NotEmpty :: IS_EMPTY는 상수 'isEmpty'를 반환하기 때문에''messages '=> array ('isEmpty '=>'Message Here ')'를 호출하는 것과 똑같은 문제입니다. – Neil

+0

@ 네일 당신 말이 맞아요, 내 편집을 참조하십시오. 나는 당신의 문제를 해결할 다른 방법을 찾고있다. 다른 유효성 검사기가 사용자 지정 메시지를 올바르게 표시합니까? – Carlos

+0

예, 다른 모든 유효성 검사기의 사용자 지정 메시지는 정상적으로 작동합니다. – Neil

관련 문제