2013-05-01 5 views
2

fieldset의 getInputFilterSpecification 메소드에서 유효성 검사 체인을 사용하여 breakChainOnFailure 매개 변수를 사용하고 하나의 오류 메시지 만 가져와야합니다.젠드 프레임 워크 2 필드 세트에서 유효성 검사기 체인을 사용하는 방법

나는 InputFilter 클래스를 사용하여 유효성 검사기 체인을 만들 수 있음을 알고 있습니다. 어떻게 설명할까요? zend documentation.

$input = new Input('foo'); 
    $input->getFilterChain() 
      ->attachByName('stringtrim', true) //here there is a breakChainOnFailure 
      ->attachByName('alpha'); 

하지만 공장 형식을 사용하여 동일하게 만들고 싶습니다. 나는이 샘플에서 breakChainOnFailure 매개 변수를 넣을 수 있습니다 는 :

$factory = new Factory(); 
    $inputFilter = $factory->createInputFilter(array(
     'password' => array(
      'name'  => 'password', 
      'required' => true, 
      'validators' => array(
       array(
        'name' => 'not_empty', 
       ), 
       array(
        'name' => 'string_length', 
       ), 
      ), 
     ), 
    )); 

답변

7

우리가 InputFilter 공장 볼 필요가 귀하의 질문에 대답하기 위해, 거기에 우리는 populateValidators method를 찾을 수 있습니다. 보시다시피, 유효성 검사기의 경우 사양에 break_chain_on_failure 키가 있습니다. 당신은 FilterChain (here)와 ValidatorChain (here)을 위해, 그런데 ... 당신의 유효성 검사기 사양 배열에 attachByName 방법 서명을

$factory = new Factory(); 
$inputFilter = $factory->createInputFilter(array(
    'password' => array(
     'name'  => 'password', 
     'required' => true, 
     'validators' => array(
      array(
       'name' => 'not_empty', 
       'break_chain_on_failure' => true, 
      ), 
      array(
       'name' => 'string_length', 
      ), 
     ), 
    ), 
)); 

을 그 추가 동일하지 않습니다해야합니다. 첫 번째 예에서는 필터 체인에서 메서드를 호출합니다.이 메서드는 실패시 중단을 전혀 지원하지 않습니다. (유효성 검사 체인 메서드의 세 번째 매개 변수이며 두 번째 매개 변수가 아니라는 것을 알 수 있습니다.)

+0

감사합니다 도움이 아주 많이. 맞아, 내 attachByName 메서드 예제가 예제를 위해 수정되었습니다. 나는 같은 경우라고 생각했다. – josepmra

0

내 코드를 검토하면 유효성 검사 클래스 인스턴스를 사용하여 유효성 검사 체인 사양에서 break_chain_on_failure 매개 변수를 사용해야합니다).

보기 예 :

'password' = array(
     'required' => true, 
     'validators' => array(
      new NotEmpty(), //these are validator instace classes 
      new HostName(), //and them may be declared before 
     ), 
    );