2013-01-21 1 views
1

ZF2의 동일한 유효성 검사기에 문제가 있습니다. 다음과 같은 방법을 만들었습니다 :Zend Framework 2 : 동일한 유효성 검사기

public function getInputFilter() 
    { 
     if(!$this->inputFilter){ 
      $inputFilter = new InputFilter(); 
      $factory = new InputFactory(); 

      $inputFilter->add($factory->createInput(array(
       'name' => 'id', 
       'required' => true, 
       'filters' => array(
        array('name' => 'Int'), 
       ), 
      ))); 

      $inputFilter->add($factory->createInput(array(
       'name' => 'username', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim') 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 3, 
          'max' => 32 
         ) 
        ) 
       ) 
      ))); 

      $inputFilter->add($factory->createInput(array(
       'name' => 'password', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim') 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 3, 
          'max' => 32 
         ) 
        ) 
       ) 
      ))); 

      $inputFilter->add($factory->createInput(array(
       'name' => 'retype-password', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim') 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 3, 
          'max' => 32 
         ), 
        array(
         'name' => 'Identical', 
         'options' => array(
          'token' => 'password' //I have tried $_POST['password'], but it doesnt work either 
         ) 
        ) 
        ) 
       ) 
      ))); 

      $this->inputFilter = $inputFilter; 
     } 

     return $this->inputFilter; 
    } 

아무 것도 표시하지 않는 동일한 유효성 검사기 (msg도 오류도 없음)를 제외한 모든 항목이 정상적으로 작동합니다. 팁을 환영합니다. 미리 감사드립니다.

답변

4

실제로 배열 구문이 잘못 배치 된 것처럼 보입니다. 이렇게하면 문제가 해결됩니다.

public function getInputFilter() 
{ 
    if(!$this->inputFilter){ 
     $inputFilter = new InputFilter(); 
     $factory = new InputFactory(); 

     $inputFilter->add($factory->createInput(array(
      'name' => 'id', 
      'required' => true, 
      'filters' => array(
       array('name' => 'Int'), 
      ), 
     ))); 

     $inputFilter->add($factory->createInput(array(
      'name' => 'username', 
      'required' => true, 
      'filters' => array(
       array('name' => 'StripTags'), 
       array('name' => 'StringTrim') 
      ), 
      'validators' => array(
       array(
        'name' => 'StringLength', 
        'options' => array(
         'encoding' => 'UTF-8', 
         'min' => 3, 
         'max' => 32 
        ) 
       ) 
      ) 
     ))); 

     $inputFilter->add($factory->createInput(array(
      'name' => 'password', 
      'required' => true, 
      'filters' => array(
       array('name' => 'StripTags'), 
       array('name' => 'StringTrim') 
      ), 
      'validators' => array(
       array(
        'name' => 'StringLength', 
        'options' => array(
         'encoding' => 'UTF-8', 
         'min' => 3, 
         'max' => 32 
        ) 
       ) 
      ) 
     ))); 

     $inputFilter->add($factory->createInput(array(
      'name' => 'retype-password', 
      'required' => true, 
      'filters' => array(
       array('name' => 'StripTags'), 
       array('name' => 'StringTrim') 
      ), 
      'validators' => array(
       array(
        'name' => 'StringLength', 
        'options' => array(
         'encoding' => 'UTF-8', 
         'min' => 3, 
         'max' => 32 
        ), 
       ), 
       array(
        'name' => 'Identical', 
        'options' => array(
         'token' => 'password' //I have tried $_POST['password'], but it doesnt work either 
        ) 
       ) 
      ) 
     ))); 

     $this->inputFilter = $inputFilter; 
    } 

    return $this->inputFilter; 
} 
+0

오 마이 굿! 이제 작동합니다. 죄송합니다. IDE 프로그램에서 오류를 표시하지 않았습니다. 감사합니다 – user1409508

+0

아무 걱정, 간단한 실수. 때로는 단지 신선한 쌍둥이가 필요합니다 =) – Diemuzi