1

フォームがあり、それにカスタム エラーを設定したいと考えています。私はZendを使用しており、次のコードがあります...

//Create validators
$formMustBeEmail = new Zend_Validate_EmailAddress();
$formMustBeEmail->setMessage(array(
Zend_Validate_EmailAddress::INVALID            => "1. Invalid type given, value should be a string",
Zend_Validate_EmailAddress::INVALID_FORMAT     => "2. '%value%' is no valid email address in the basic format local-part@hostname",
Zend_Validate_EmailAddress::INVALID_HOSTNAME   => "3. '%hostname%' is no valid hostname for email address '%value%'",
Zend_Validate_EmailAddress::INVALID_MX_RECORD  => "4. '%hostname%' does not appear to have a valid MX record for the email address '%value%'",
Zend_Validate_EmailAddress::INVALID_SEGMENT    => "5. '%hostname%' is not in a routable network segment. The email address '%value%' should not be resolved from public network.",
Zend_Validate_EmailAddress::DOT_ATOM           => "6. '%localPart%' can not be matched against dot-atom format",
Zend_Validate_EmailAddress::QUOTED_STRING      => "7. '%localPart%' can not be matched against quoted-string format",
Zend_Validate_EmailAddress::INVALID_LOCAL_PART => "8. '%localPart%' is no valid local part for email address '%value%'",
Zend_Validate_EmailAddress::LENGTH_EXCEEDED    => "9. '%value%' exceeds the allowed length",

それから私はフォームを作ります...

$this->addElement('text', 'email');
$emailElement = $this->getElement('email');
$emailElement
    ->setLabel('Emailadres')
    ->setOrder(1)
    ->setRequired(true)
    ->addValidator($formMustBeTest)
    ->addValidator($formMustBeEmail)
    ->addFilter(new Zend_Filter_StripTags());

しかし、うまくいきません。Zend による通常のエラーがまだ発生します。誰かが私が間違っていることを見ることができますか?

高度なTnx...

4

2 に答える 2

1

うわー、私はとても愚かです:)

$formMustBeEmail->setMessage()

これは文字列を期待します

$formMustBeEmail->setMessages()

これは配列を期待しています

私がしなければならなかったのは、setMessageをsetMessagesに変更することだけです

于 2010-05-11T19:20:19.217 に答える
0

@iSenne、機能しません。エラーを表示しないでください。

setMethod('post'); $this->setAction('/index/index');

  $this->addElement('submit','submit');
  $this->addElement('text','email');

  $email = $this->getElement('email');
  $email_validate = new Zend_Validate_EmailAddress();
  $email_validate->setMessages(array(
    Zend_Validate_EmailAddress::INVALID            => "1. Invalid type given, value should be a string",
    Zend_Validate_EmailAddress::INVALID_FORMAT     => "2. '%value%' is no valid email address in the basic format local-part@hostname",
    Zend_Validate_EmailAddress::INVALID_HOSTNAME   => "3. '%hostname%' is no valid hostname for email address '%value%'",
    Zend_Validate_EmailAddress::INVALID_MX_RECORD  => "4. '%hostname%' does not appear to have a valid MX record for the email address '%value%'",
    Zend_Validate_EmailAddress::INVALID_SEGMENT    => "5. '%hostname%' is not in a routable network segment. The email address '%value%' should not be resolved from public network.",
    Zend_Validate_EmailAddress::DOT_ATOM           => "6. '%localPart%' can not be matched against dot-atom format",
    Zend_Validate_EmailAddress::QUOTED_STRING      => "7. '%localPart%' can not be matched against quoted-string format",
    Zend_Validate_EmailAddress::INVALID_LOCAL_PART => "8. '%localPart%' is no valid local part for email address '%value%'",
    Zend_Validate_EmailAddress::LENGTH_EXCEEDED    => "9. '%value%' exceeds the allowed length",
  ));


  $email->setLabel('Emailadres')
        ->setOrder(1)
        ->setRequired(true)
        ->addValidator($email_validate)
        ->addFilter(new Zend_Filter_StripTags());


}

}

于 2010-06-05T21:52:15.057 に答える