ユーザーのメールアドレスの入力フィールドを生成するための次のコードがあります
$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」は電子メールアドレスの有効なホスト名では
ありません。
l'はローカルネットワーク名のようですが、ローカルネットワーク名は許可されていません
これらすべてではなく、1つのカスタムエラーのみを発生させたいだけです。addErrorMessageメソッドでエラーメッセージ「InvalidEmailAddress」を設定すると、db_validationに対して同じメッセージが再度生成されます。