Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je galère à 100% pour personnaliser les messages d'erreur issu de la validation par Zend_form ou Zend_Input_Filter, j'ai beau avoir essayé je ne sais combien de tutos trouvés et rien ne marche.
Je précise que la solution qui utilise Zend_translate avec zend_form ne m'interresse pas, mais apparement on peut Zend_Input_Filter sans le translate et personnaliser ses messages d'erreur sans problème.
Par contre j'y suis pas arrivé.
Quelqu'un aurait donc un court exemple qui marche?
Merci d'avance.
Seb
Hors ligne
Tu peux mettre tes messages d'erreurs lors de la création des éléments, comme par exemple :
$this->setLabel($label) ->setRequired(false) ->addValidator('Digits', true, array('messages' => 'Le code postal doit être composé uniquement de chiffre (sans espace).')) ->setAttribs(array("id"=>$id,"class"=>$class));
Ou si tu crées toi meme les validateurs :
$validator = new Zend_Validate_Regex('/^[-+]?[0-9]*\.?[0-9]{0,2}$/'); $validator->setMessage("La chaîne '%value%' n'est pas au format attendue, veuillez entrer par exemple 1.00", Zend_Validate_Regex::NOT_MATCH); $this->setLabel($label) ->setRequired(false) ->addValidator($validator) ->setAttribs(array("id"=>$id,"class"=>$class));
Hors ligne
A noter que la syntaxe "non-objet" semble poser probleme pour les messages.
(j'avais posté, mais personne n'avais pu me répondre)
$validators = array( 'nom' => array('notEmpty', 'Alpha', 'messages' => array( Zend_Validate_Alpha::NOT_ALPHA => $translate->_("Champ incorrect"), Zend_Validate_Alpha::STRING_EMPTY => $translate->_("Votre nom est nécessaire") ) ), );
Cela provoquais un
Fatal error: Uncaught exception 'Zend_Validate_Exception' with message 'No message template exists for key 'notAlpha'' in E:\ged\www\ATESSIA\srouille\ZF version\library\Zend\Validate\Abstract.php:129 Stack trace: #0 E:\ged\www\ATESSIA\srouille\ZF version\library\Zend\Validate\Abstract.php(145): Zend_Validate_Abstract->setMessage('Champ incorrect', 'notAlpha') #1 E:\ged\www\ATESSIA\srouille\ZF version\library\Zend\Filter\Input.php(736)
Alors meme que la constante 'NOT_ALPHA'(dans cet exemple) existe bel est bien dans le validateur "Alpha"
(si jamais quelqu'un a eu une solution entre temps)
Merci
Hors ligne
Bon j'ai trouvé mon erreur, dans l'element message du tableau il faut creer un tableau pour chaque validateur :
$validators = array( '*' => 'NotEmpty', 'SysUsrName' => array(new Zend_Validate_StringLength(5,10) ,'Alnum', 'messages' => array( array( Zend_Validate_StringLength::TOO_SHORT=>'Le champ adresse est vide', Zend_Validate_StringLength::TOO_LONG=>'Le champ adresse doit faire 10 caractères' ), array(Zend_Validate_Alnum::NOT_ALNUM=>'Pas alphanumérique') ), ) );
Et ça marche
stf->Ton probleme avec NOT_ALPHA vient de là aussi, il faut que tu fasses :
$validators = array( 'SysUsrName' => array('notEmpty', 'Alpha', 'messages' => array('message pour le "notEmpty"',array( Zend_Validate_Alpha::NOT_ALPHA => "Champ incorrect", Zend_Validate_Alpha::STRING_EMPTY => "Votre nom est nécessaire") ) ), );
En gros pour mettre un message unique pour un validateur genre le 'message pour le "notEmpty"', il ne faut pas creer de tableau.
Pour creer un message par type d'erreur (comme pour Zend_Validate_Alpha::STRING_EMPTY => "Votre nom est nécessaire"), il faut creer un tableau! (même si 1 seul élément dans ce tableau!)
Dernière modification par sebondus (15-05-2008 16:27:11)
Hors ligne
Oh !
Moi qui pensais qu'il gérait tout d'un coup ^^
Etrange en tout cas qu'il faille meme faire un tableau pour les 'messages simples', enfin bref
Grand merci a toi dans tout les cas je testerais ca demain
Dernière modification par stf (15-05-2008 17:44:38)
Hors ligne
Pages: 1