2013-08-30 53 views
1

上午和電子郵件驗證混淆。在我的模型中,我定義了表單域的規則。我的問題是,我不知道Zend\Validator\EmailAddress()規則。在標準的InputFilter我有標準的過濾器和驗證器,如:require,min,max,encode等。 ZF2是否支持電話號碼驗證?Zend Framework 2電子郵件和電話驗證

我讀了這個,但我不知道如何在我的模型陣列getInputFilter()中混合EmailAddress規則。我是否需要在控制器中定義電子郵件驗證或者我可以在模型中進行驗證?

http://framework.zend.com/manual/2.0/en/modules/zend.validator.set.html

我的模型中使用的Zend \輸入過濾器\輸入過濾和我這樣設置規則:

 /** 
     * Company Rules 
     * 
     * @filters 
     *  StripTags | StringTrim 
     * @validators 
     *  StringLenght | UTF-8 encoding | min | max 
     */ 

     $filter->add(array(
       'name' => 'company', 
       'required' => true, 
       'filters' => array(
         array('name' => 'StripTags'), 
         array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
         array(
           'name' => 'StringLenght', 
           'options' => array(
             'encoding' => 'UTF-8', 
             'min' => 2, 
             'max' => 100, 
           ), 
         ), 
       ), 
     )); 

     /** 
     * Fax Rules 
     * 
     * @filters 
     *  StripTags | StringTrim | Int 
     * @validators 
     *  StringLenght | UTF-8 encoding | min | max 
     */ 

     $filter->add(array(
       'name' => 'fax', 
       'required' => true, 
       'filters' => array(
         array('name' => 'StripTags'), 
         array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
         array(
           'name' => 'StringLenght', 
           'options' => array(
             'encoding' => 'UTF-8', 
             'min' => 2, 
             'max' => 100, 
           ), 
         ), 
       ), 
     )); 
    } 
} 

回答

8

你可以混合不同的驗證以下列方式寫作風格:

'validators' => array(
    array(
     'name' => 'StringLength', 
     'options' => ... 
    ), 
    new \Zend\Validator\EmailAddress() 
), 

您還可以使用類似數組的格式指定EmailAddress驗證器:

'validators' => array(
    array(
     'name' => 'StringLength', 
     'options' => array(
      'encoding' => 'UTF-8', 
       'min' => 2, 
       'max' => 100, 
      ), 
    ), 
    array(
     'name' => 'EmailAddress', 
    ), 
), 

關於電話號碼的驗證,ZF2沒有提供可以使用的驗證器(可能是因爲國際電話號碼格式之間有太多的差異),但是使用Zend \ Validator \ Regex可以實現一個不太多的工作。

+0

好感謝重播我會嘗試這個,當我下班回來。 – Ivan

0

這是電子郵件驗證的,至少簡單的和最適合的方式對我來說

'validators' => array(

       array(

        'name' => 'EmailAddress', 
        'options' =>array(
         'domain' => 'true', 
         'hostname' => 'true', 
         'mx'  => 'true', 
         'deep'  => 'true', 
         'message' => 'Invalid email address', 
        ), 
),