4 Stimmen

Der zend EmailAddress form validator gibt nur eine eigene Fehlermeldung zurück

Ich erstelle ein E-Mail-Formular-Element wie folgt (innerhalb einer Zend Form):

//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);

Wenn nun eine ungültige E-Mail eingegeben wird, erscheint eine ganze Reihe von Meldungen:

'#' is no valid hostname for email address '@#$@#'
'#' 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 '@#$@#'

Ich frage mich, ob es möglich ist, nur die von mir angegebene Fehlermeldung auszugeben, z. B. "Bitte geben Sie eine gültige E-Mail-Adresse ein"?

5voto

David Snabel-Caunt Punkte 57046

Der einfachste Weg ist die Verwendung von addErrorMessage() um eine einzige benutzerdefinierte Meldung für alle Fehler festzulegen.

In Ihrem Beispiel können Sie es zu Ihrem Code hinzufügen und fließend aufrufen, oder Sie fügen die Zeile

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

Sie sollten auch den zweiten Parameter in addValidator ändern, so dass, sobald die Validierung fehlgeschlagen ist, andere Bedingungen nicht überprüft werden.

->addValidator('EmailAddress', true)

Sie wird erklärt in der Referenzhandbuch aber nicht sehr gut. Der Name addErrorMessage bedeutet nicht, dass es die Standardmeldungen außer Kraft setzt, aber so ist es.

1voto

Ram Ch. Bachkheti Punkte 2609

Sie können entweder :

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

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

Oder Sie verwenden :

$email_validate = new Zend_Validate_EmailAddress();

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

$email->addValidator($email_validate ,TRUE);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X