2012-08-14 3 views
3

내 목표는 URL에 전달 된 매개 변수의 유효성을 확인하는 것입니다, 그래서 나는과 같이, 실행 유효성 검사기의 목록을 가지고 validate 메소드 생성 :젠드 프레임 워크 InArray 검증 배열 구문

$validators = array(
     'number' => array(
      'digits', 
      'presence' => 'required', 
      'messages' => array(
       "%value%' is not a valid number.", 
      ), 
     ), 
     'country' => array(
      'presence' => 'required', 
      'InArray' => array('haystack' => array('USA', 'CAN', 'AUS', 'JPN')), 
      'messages' => array(
       "'%value%' is not a valid country code.", 
      ), 
     ), 
     // etc. 
); 

$valid = new Zend_Filter_Input(array(), $validators, $data); 
return $valid->isValid() 

문제가 있다는 것입니다을 'InArray'검사기는 아무 것도하지 않습니다. 어떤 오류도 발생시키지 않습니다. 단지 작동하지 않습니다. 구문이 잘못되었다고 가정합니다.

'InArray'검사기의 올바른 구문은 무엇입니까? 추가 규칙과 속성을 통과 할

+0

그 유효성 검사기를 통과하는 대상은 무엇입니까? 'haystack'은'InArray' 키의 배열 요소가 아니라'messages'와 같은 자체 인덱스 여야합니다. – drew010

+0

명확성을 위해 질문을 업데이트했습니다. 'InArray'는 별도의 색인으로 '건초 더미'와 같이 '자릿수'로 선언 될 것이라고 말하고 있습니까? [좋아, 그건 작동하지 않습니다. 그 결과 Zend_Validate_InArray에 대한 누락 된 인수가 발생합니다. – Ian

+0

제 대답을보십시오. 위의 형식이 아닐지라도 haystack 매개 변수를 사용할 수있는 Zend_Form에 배열을 전달하려고했을 것입니다. – drew010

답변

3

Zend_Filter_Input와 함께 사용할 수 유효성 검사기 객체의 구체적인 인스턴스를 생성하고이 같이 당신의 유효성 검사기로 설정합니다 :

$validators = array(
      'number' => array(
        'digits', 
        'presence' => 'required', 
        'messages' => array(
          "%value%' is not a valid number.", 
        ), 
      ), 
      'country' => array(
        new Zend_Validate_InArray(
         array('haystack' => array('USA', 'CAN', 'AUS', 'JPN')) 
        ), 
        'presence' => 'required', 
        'messages' => array(
          "'%value%' is not a valid country code.", 
        ), 
      ), 
      // etc. 
    ); 

이처럼해야 할 이유 유효성 검사기 InArray을 사용할 때 건초 더미를 설정하기위한 필터 metacommands이 없기 때문입니다. 많은 유효성 검사기에 적용되는 몇 가지 기본 메타 명령이 있지만 건초 더미는 그 중 하나가 아닙니다.

haystack을 지정하려면 require 옵션을 사용하여 Zend_Validate_InArray 객체를 새로 만들고 Zend_Filter_Input에 지정된 유효성 검사기 배열에 해당 유효성 검사기를 전달합니다.

+0

트릭을 했어. 감사. – Ian