我有下面的代碼來生成輸入域用戶的電子郵件地址Zend的形式驗證電子郵件
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email:')
->addFilters(array('StringTrim', 'StripTags'))
->addValidator('EmailAddress')
->addValidator(new Zend_Validate_Db_NoRecordExists(
array(
'adapter'=>Zend_Registry::get('user_db'),
'field'=>'email',
'table'=>'tbl_user'
)))
->setRequired(true)
->setDecorators(array(
array('Label', array('escape'=>false, 'placement'=>'append')),
array('ViewHelper'),
array('Errors'),
array('Description',array('escape'=>false,'tag'=>'div')),
array('HtmlTag', array('tag' => 'div')),
));
$this->addElement($email);
現在的問題是,如果用戶輸入電子郵件無效的主機名,它產生3個錯誤。可以說用戶輸入'admin @ l'作爲電子郵件地址,並且錯誤將是
*'l'對於電子郵件地址'admin @ l'是無效的主機名稱
*'l'與期望的結構不匹配DNS主機名
*'l'似乎是本地網絡名稱,但不允許本地網絡名稱
我只是希望它只給出一個自定義錯誤而不是所有這些。如果我通過addErrorMessage方法設置了錯誤消息「無效的電子郵件地址」,它將再次針對db_validation生成相同的消息。
是的,但我也有DB驗證器,它檢查電子郵件是否已用於註冊該網站。如果我添加上面的消息,即使在電子郵件有效但存在於數據庫中的情況下,它也會顯示自定義消息。 – Bryan 2010-12-21 08:34:08
看看吧!如果沒有工作,那麼工作就更好了,那就沒問題了! – 2010-12-21 09:00:41
我會在週末進行測試,並會讓你知道。謝謝 – Bryan 2010-12-23 11:50:58