1

メールを検証し、形式が無効な場合にエラー メッセージを表示するために、このフォーム要素を使用していました。

  $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' と表示されるだけです)。

前もって感謝します。

4

2 に答える 2

0

ここで、さまざまなエラーメッセージ設定機能がどのように機能するかを説明する回答を投稿しました。

Zend バリデータとエラー メッセージ: addValidator と addErrorMessage

要するに、これを試してください:

'messages' => 'Email already exists'

配列を使用する代わりに。

于 2010-10-21T21:14:37.747 に答える
0

このようにバリデータを書く必要があります..

$email_users->addValidator(
    'EmailAddress', 
    true, 
    array( 'messages' => array( 'emailAddressInvalidFormat' => "Email Address is Not Valid... !<br>", "emailAddressInvalidHostname"=>"Email Address is Not Valid... !<br>", "hostnameUnknownTld"=>"Email Address is Not Valid... !<br>","hostnameLocalNameNotAllowed"=>"Email Address is Not Valid... !<br>") )
);

無効な電子メール アドレス エラーの場合は常に、 「電子メール アドレスが無効です... !」と表示される必要があります。.

于 2013-02-13T10:20:37.920 に答える