2011-07-21 2 views
4
私は(Zendのフォーム内)ので、同様のメールフォーム要素作成してい

:無効な電子メールが入力されると、今作るのZendのEmailAddressフォームバリデータのリターン一つだけのカスタムエラーメッセージ

//create e-mail element 
$email = $this->createElement('text', 'username') 
       ->setLabel('E-mail:') 
       ->setRequired(true) 
       ->addFilters(array('StringTrim', 'StringToLower')) 
       ->addValidator('EmailAddress', false, array(
        'messages' => array(
         Zend_Validate_EmailAddress::INVALID => 'Dit e-mail adres is ongeldig.', 
        ) 
      )); 
//add element 
$this->addElement($email); 

をかなり大量のメッセージが表示されます。

'#' is no valid hostname for email address '@#[email protected]#' 
'#' does not match the expected structure for a DNS hostname 
'#' does not appear to be a valid local network name 
'@#$' can not be matched against dot-atom format 
'@#$' can not be matched against quoted-string format 
'@#$' is no valid local part for email address '@#[email protected]#' 

私は、このような「有効なメールアドレスを入力してください」と、それは私だけで提供されるエラーメッセージを発することが可能である、だろうか?

答えて

5

最も簡単な方法は、addErrorMessage()を使用して、すべてのエラーに対して1つのカスタムメッセージを設定することです。あなたの例では

あなたのコードに追加し、流暢にそれを呼び出す、またはライン

$email->addErrorMessage('Dit e-mail adres is ongeldig.'); 
を追加することができます

あなたはまた、次のようにaddValidatorするために、第2のパラメータを変更する必要がありますので、その検証は、他の条件が失敗した後、チェックされません。

->addValidator('EmailAddress', true) 

それはReference Guideで説明されてではなく、非常によく。 addErrorMessageという名前は、デフォルトのメッセージを上書きすることを意味するものではありません。

$email->addErrorMessage('Dit e-mail adres is ongeldig.'); 

$email->addValidator('EmailAddress', true); 

をそれとも、使用することができます:

+0

感謝を。 2番目のパラメータをtrueに設定すると、どのメッセージを設定する必要がありますか?一般的なINVALIDのもの? – Tom

+0

私はやります。私は、自分の電子メールアドレスがなぜ検証されなかったのかをユーザに示すことは有用であるとは思わなかった。私はたいてい、「有効な電子メールアドレスを入力してください」と似ています。 –

+0

私は分かります。私の質問は、「無効なメッセージではなく、他のメッセージが発生したらどうなるでしょうか?その場合、最初の無効なメッセージで停止し、私のカスタムメッセージを表示しませんか? – Tom

1

あなたはどちらかを使用でき

$email_validate = new Zend_Validate_EmailAddress(); 

$email_validate->setMessage("Your custom message"); 

$email->addValidator($email_validate ,TRUE); 
関連する問題