2011-04-03 92 views
0

我有以下代碼Zend Framework的輸入驗證消息

$validators = array(
     'name' => array('NotEmpty', 
         'messages' => 'A valid name is required' 
     ), 

     'email'=> array(
      new Zend_Validate_Regex("^[a-z0-9]+[a-z0-9_-]*(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+) *\.([a-z]+){2,}$^"), 
      'messages' => array('A valid email is required', 
       Zend_Validate_Regex::NOT_MATCH=>'The email is not valid',) 
     )) 

,當我檢查的isValid和雙方的姓名和電子郵件是空的,我得到兩個「需要一個有效的名稱」

結果看起來像

Array 
(
    [name] => Array 
     (
      [isEmpty] => A valid name is required 
     ) 

    [email] => Array 
     (
      [isEmpty] => A valid name is required 
     ) 

) 

所以我的問題是如何使兩個都是空的情況下獲得所需的每個消息?我還需要電子郵件驗證才能正常工作並顯示正確的消息。 在此先感謝。

回答

1

對於正確的電子郵件驗證,您可以使用built-in email validator。所以,當你創建你的表單元素,你可以指定驗證:

$email = new Zend_Form_Element_Text('email'); 
$email->setDecorators($this->elementDecorators) 
     ->setLabel('Email') 
     ->setRequired(true) 
     ->addValidator('EmailAddress') 
     ->setFilters(array('StringTrim','StringToLower')); 

您也可以指定地址錯誤信息:然後

$email->setErrorMessages(array(
     'err1' => 'Error1', 
     'err2' => 'Error2' 
)); 

Zend_Form的迴音必正確的錯誤信息給你。

+0

問題是我沒有使用Zend_Form,我只是需要簡單的表單驗證,謝謝。 – Centurion 2011-04-03 16:22:26

+0

爲什麼不呢? Zend_Form使得它很簡單地處理表單。然而,在你的代碼中,你似乎只設置了一個驗證器,但你需要兩個驗證器。嘗試將它們分開。你可以嘗試靜態驗證器,Zend_Validate :: is($ email,'EmailAddress') – 2011-04-04 05:01:38

0
$validator = new Zend_Validate_EmailAddress(); 
$validator->setMessage(
    'A valid email is required', 
    Zend_Validate_EmailAddress::INVALID 
);