J'ai le code suivant pour générer un champ de saisie pour l'adresse e-mail de l'utilisateur maintenant, le problème est si l'utilisateur saisit un nom d'hôte invalide pour le courrier électronique, il génère 3 erreurs. Disons que l'utilisateur entrait «admin @ l» comme adresse électronique et les erreurs seront de Je veux juste qu'il ne donne qu'une erreur personnalisée au lieu de tout cela. Si je définis le message d'erreur "Adresse e-mail non valide" par la méthode AdderRormessage, elle générera à nouveau le même message contre la DB_VALIDATION. P> P>
* 'L' n'est pas un nom d'hôte valide pour l'adresse e-mail 'admin @ l'
* 'L' ne correspond pas à la structure attendue pour un nom d'hôte DNS
* 'L' semble être un nom de réseau local, mais les noms de réseau locaux ne sont pas autorisés p>
5 Réponses :
$mailValidator = new Validate_Email(); $email->addValidator($mailValidator, true);
Oui, mais j'ai aussi un validateur DB, qui vérifie si le courrier électronique est déjà utilisé pour vous inscrire au site. Et si j'ajoute le message ci-dessus, même dans le cas où le courrier électronique est valide mais existe dans la base de données, il affichera le message personnalisé.
Vérifiez-le !! Travaillé alors mieux sinon travaillé alors ça va !!
Il semble manquer de nombreuses lignes ... P>
devrait probablement utiliser ceci: $ mailvalidator = nouveau zend_validate_emailaddress (); p>
Vous pouvez également faire quelques autres validations voir ici: http: // framework.zend.com/manual/fr/zend.validate.set.html P>
Eh bien, c'est une réponse tardive, mais je pense que c'est toujours utile.
ajoutez simplement addvalidator (ligne 67) p>
Ajoute un validateur à la fin de la chaîne p>
Si $ breakchaainonfailure est vrai, alors si le validateur échoue, le prochain
Validateur dans la chaîne, si l'on existe, ne sera pas exécuté. P>
retour: fournit une interface fluide p>
Accès: public p>
blockQuote> ici la signature: p> de sorte que le code est: p>
Vous devez créer une instance de la classe Zend_Validate_EmailAddress et appelez la méthode SetMessages, puis remplacez les messages que vous aimez, pour supprimer ceux que vous avez mentionnés, ce serait quelque chose comme ceci:
$emailValidator->setMessages(array( Zend_Validate_EmailAddress::INVALID_FORMAT => "Your error message", Zend_Validate_Hostname::INVALID_HOSTNAME => "Your error message", Zend_Validate_Hostname::LOCAL_NAME_NOT_ALLOWED => "Your error message" ));
Utilisation d'un validateur personnalisé est le seul moyen que j'ai trouvé pour éviter ce problème. Si ce que vous voulez est: p> alors je vous suggère de faire quelque chose comme ceci: p> Il y a trois validateurs ici, tous ont leur deuxième paramètre Le premier validateur est e-mail fort>, qui est mon propre validateur personnalisé: P>
$ ceci-> getattrib ("user_id ') code> représente ID de l'utilisateur actuel em>. p>
$ breakonfailure code> défini sur
false code >, donc si un validateur échoue, les autres ne seront pas appelés. p>
class My_Validate_Email extends Zend_Validate_EmailAddress
{
public function getMessages()
{
return array('invalidEmail' => 'Your email address is not valid.');
}
}