Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-08-2009 10:05:13

Patanock
Nouveau membre
Date d'inscription: 12-08-2009
Messages: 7

Personnalisation message d'erreur formulaire (validators)

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 big_smile

Hors ligne

 

#2 12-08-2009 10:33:20

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Personnalisation message d'erreur formulaire (validators)

Bonjour,

Pour les traductions je me sert d'un fichier externe qui contient tous les messages d'erreurs dont j'a besoin :

Code:

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 :

Code:

// 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 smile

Cordialement,
Julien

Hors ligne

 

#3 12-08-2009 10:59:09

Patanock
Nouveau membre
Date d'inscription: 12-08-2009
Messages: 7

Re: Personnalisation message d'erreur formulaire (validators)

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

 

#4 12-08-2009 11:04:12

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Personnalisation message d'erreur formulaire (validators)

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

 

#5 12-08-2009 11:40:39

Patanock
Nouveau membre
Date d'inscription: 12-08-2009
Messages: 7

Re: Personnalisation message d'erreur formulaire (validators)

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages