メールを検証し、形式が無効な場合にエラー メッセージを表示するために、このフォーム要素を使用していました。
$email_users = new Zend_Form_Element_Text('email_users');
$email_users->setLabel('Email:')
->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress')
->setErrorMessages(array('messages' => 'Invalid Email'));
setErrorMessages は、これが必要な唯一の検証であったため、すべてのエラー メッセージをカスタム メッセージに置き換えたため、正常に機能しました。DB に既に存在するかどうかを確認するために、別の検証を追加する必要がありました。
$email_users = new Zend_Form_Element_Text('email_users');
$email_users->setLabel('Email:')
->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidators(array(
array('EmailAddress', true,
array(
'messages' =>
array(Zend_Validate_EmailAddress::INVALID => 'Invalid Email')
)
),
array('Db_NoRecordExists', true,
array(
'messages' =>
array(Zend_Validate_Db_NoRecordExists::ERROR_RECORD_FOUND => 'Email already exists'),
'table' => 'users',
'field' => 'email_users')
)));
機能は問題ありません。問題は、電子メールが無効な場合、デフォルトの zend 検証メッセージが表示されることです。それが存在する場合は、カスタム メッセージが表示されます。この方法で以前の機能をアーカイブする方法はありますか? (すべての無効なメール メッセージを置き換えます) setErrorMessages を使用できません。これは、メールが既に存在する場合に「無効なメール」が表示されるためです。
'messages' => 'Error' を使用してみましたが、何も起こりません (エラーはありませんが、デフォルトのメッセージが表示されます)。
$emailValidator = 新しい Zend_Validate_EmailAddress(); $emailValidator->setMessages('無効な電子メール');
そして、フォーム要素に追加しました
$email_users->addValidator($emailValidator)
同じ結果はありません。最も近いのは 'messages' => array(Zend_Validate_EmailAddress::INVALID_FORMAT => 'Invalid email') を実行することです 'email@' や 'email' のようなものを入力するとメッセージが表示されますが、'email@host と入力すると' ホスト名、dns、ローカルネットワークに関する 3 つのエラーが表示されますが、setMessages('Error') を使用すると表示されません ('Error' と表示されるだけです)。
前もって感謝します。