Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
1er message de ma part pour vous demander un peu d'aide :
J'ai une class qui hérite de zend_form, dans ma méthode init, je fais ce genre de chose pour créer mes champs :
$this->addElement('password', 'password2', array(
'label' => utf8_encode('Confirmez votre password :'),
'required' => true,
'validators' => array(
array('validator' => 'StringLength', 'options' => array(6, 20)),
)
));
Avec cette façon d'écrire, comment faire pour passer au validator mes propres messages quand le texte saisi est trop court ou trop long. J'ai beau essayer dans tous les sens, je n'y arrive pas.
J'ai bien trouvé cette solution, mais elle ne me plait pas trop, car elle m'oblige à créer un validator pour chacun de mes contrôles, et allourdi le code :
1) déclarer le validator avec messages personnalisés
$lengthValidator = new Zend_Validate_StringLength(6, 20);
$lengthValidator->setMessages( array(
Zend_Validate_StringLength::TOO_SHORT => utf8_encode('La longueur minimale est de 6 caractères'),
Zend_Validate_StringLength::TOO_LONG => utf8_encode('La longueur maximale est de 20 caractères'),
));
2) Puis le passer à mon champs
// password
$pass = $this->addElement('password', 'password', array(
'label' => utf8_encode('Password :'),
'required' => true,
'validators' => array(
$lengthValidator,
)
));
Merci d'avance pour votre aide
Hors ligne
Bonjour,
Pour les traductions je me sert d'un fichier externe qui contient tous les messages d'erreurs dont j'a besoin :
notAlnum;'%value%' ne contient pas que des lettres et/ou des chiffres. notAlpha;'%value%' ne contient pas que des lettres. notBetween;'%value%' n'est pas compris entre %min% et %max% inclus. notBetweenStrict;'%value%' n'est pas compris entre %min% et %max% exclus. ...
Ce fichier s'appel "globalerror_fr.csv" et il suffit d'indiquer où il se trouve dans ton bootstrap avec :
// Gestion langage $translate = new Zend_Translate('csv', './application/languages', null, array('scan' => Zend_Translate::LOCALE_FILENAME)); $translate->setLocale('fr_FR'); Zend_Registry::set('Zend_Translate', $translate);
Tu peux télécharger ce fichier ici : http://www.effigie-creations.com/downlo … ror_fr.csv
Ainsi, à chaque fois que tes validateurs vont générer des erreurs, ils vont regarder dans le registre pour voir si des traduction existe et les utiliser.
En espérant que cela puisse t'aider
Cordialement,
Julien
Hors ligne
Comment se fait le lien avec ton formulaire ? C'est automatique grâce à la clé que tu as mise, ou bien il faut passer ton translate dans la construction de ton élement ?
Hors ligne
Non c'est automatique, Zend_Form va regarder dans Zend_Registry pour voir si un objet Zend_Translate est présent, il va ensuite rechercher les clés de traduction (si elles existent) (chaque erreur fait référence à un mot clé présent dans le ficher).
Hors ligne
Ca fonctionne nikel, merci beaucoup !
J'ai juste galérer pour le path, car apparemment le "." désigne le répertoire public chez moi :p
Hors ligne