Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-05-2008 09:43:23

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

[1.5]Personnaliser messages erreur avec Zend_form ou Zend_Input_Filter

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

 

#2 15-05-2008 11:39:52

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [1.5]Personnaliser messages erreur avec Zend_form ou Zend_Input_Filter

Tu peux mettre tes messages d'erreurs lors de la création des éléments, comme par exemple :

Code:

        $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 :

Code:

          $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

 

#3 15-05-2008 12:32:11

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [1.5]Personnaliser messages erreur avec Zend_form ou Zend_Input_Filter

A noter que la syntaxe "non-objet" semble poser probleme pour les messages.
(j'avais posté, mais personne n'avais pu me répondre)

Code:

$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

Code:

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

 

#4 15-05-2008 16:19:15

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: [1.5]Personnaliser messages erreur avec Zend_form ou Zend_Input_Filter

Bon j'ai trouvé mon erreur, dans l'element message du tableau il faut creer un tableau pour chaque validateur :

Code:

$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 big_smile

stf->Ton probleme avec NOT_ALPHA vient de là aussi, il faut que tu fasses :

Code:

$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

 

#5 15-05-2008 17:44:23

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [1.5]Personnaliser messages erreur avec Zend_form ou Zend_Input_Filter

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 smile


Grand merci a toi dans tout les cas je testerais ca demain smile

Dernière modification par stf (15-05-2008 17:44:38)

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