2013-05-30 58 views
2

優先級校驗我有這樣的表單輸入一個驗證:ZF2:在輸入過濾

$this->add(array(
     'name' => 'email', 
     'required' => true, 
     'filter' => array(
      'name' => 'StripTags', 
     ), 
     'validators' => array(
      array(
       'name' => 'NotEmpty', 
       'options' => array(
        'messages' => array(
         \Zend\Validator\NotEmpty::IS_EMPTY => 'Veuillez renseigner une adresse e-mail.', 
        ), 
       ), 
      ),     
      array(
       'name' => 'StringLength', 
       'options' => array(
        'encoding' => 'UTF-8', 
        'min' => 1, 
        'max' => 100, 
       ), 
      ), 
      array(
       'name' => 'EmailAddress', 
       'options' => array(
       ), 
      ), 
     ), 
    )); 

有我的輸入basicaly 3驗證。 NotEmpty,StringLengthEmailAdress

有沒有辦法在它們之間設置一種優先級? 現在,如果我提交一個空表單,我會收到與這3個驗證器相關的消息,即。 :

  • 我的輸入爲空。
  • 我的字符串長度太短(感謝...)
  • 我的輸入不是電子郵件(再次感謝......)

反正有沒有告訴我的驗證停在第一次失敗? (或者至少只打印第1條消息)。

回答

5

使用'break_chain_on_failure'鍵與真值的驗證規範,即

$this->add(array(
    'name' => 'email', 
    'required' => true, 
    'filter' => array(
     'name' => 'StripTags', 
    ), 
    'validators' => array(
     array(
      'name' => 'NotEmpty', 
      'break_chain_on_failure' => true, 
      'options' => array(
       'messages' => array(
        \Zend\Validator\NotEmpty::IS_EMPTY => 'Veuillez renseigner une adresse e-mail.', 
       ), 
      ), 
     ),     
     array(
      'name' => 'StringLength', 
      'break_chain_on_failure' => true, 
      'options' => array(
       'encoding' => 'UTF-8', 
       'min' => 1, 
       'max' => 100, 
      ), 
     ), 
     array(
      'name' => 'EmailAddress', 
      'options' => array(
      ), 
     ), 
    ), 
)); 
+0

完美!正是我在找什麼!謝謝 ;) – Tounu