Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-03-2010 11:09:30

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

modifier le message d'erreur d'un validateur

Bonjour,
j'aimerais modifier le message d'erreur d'un validateur.
Je m'explique: j'ai crée un formulaire où certains champs sont requis.
Pour ces champs j'ai procédé comme suit:
$champ->setRequired(true);
tout ceci marche bien mais le message quand le champ est vide est en anglais et j'aimerais le modifier.
Comment faire ?

Merci pour votre aide.

Hors ligne

 

#2 08-03-2010 13:48:14

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: modifier le message d'erreur d'un validateur

Bonjour Enzostar,

Il faut que tu regardes du côté de Zend_Translate.

Il y a tout ce qu'il faut pour gérer l'internationalisation d'une application Zend et notamment les textes affichés par les validateurs utilisés par Zend_Form.

Un petit tutoriel est disponible ici : http://wiip.fr/content/zend-form-person … alidateurs

@+

Stéphan.

Dernière modification par StefC30 (08-03-2010 13:48:48)

Hors ligne

 

#3 08-03-2010 16:22:46

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

Zend_translate me semble bien compliqué... Je ne sais pas ce qu'est le registre.
Du coup, j'ai crée dans mon formulaire un validateur Zend_Validate_NotEmpty() mais le message ne s'affiche pas alors qu'avec setRequired(true) cela s'affiche (mais en anglais..).

Hors ligne

 

#4 09-03-2010 09:17:43

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: modifier le message d'erreur d'un validateur

Tu peux redéfinir le message mais bon zend_translate est la meilleur solution + propre :p

sinon :

Code:

$validator = new Zend_Validate_NotEmpty();
$validator->setMessage('MON MESSAGE', Zend_Validate_NotEmpty::IS_EMPTY);

De souvenir , sinon regarde dans la doc zend_validate dans la dernier page je crois hmm

Hors ligne

 

#5 10-03-2010 12:25:54

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

iop974 a écrit:

Tu peux redéfinir le message mais bon zend_translate est la meilleur solution + propre :p

sinon :

Code:

$validator = new Zend_Validate_NotEmpty();
$validator->setMessage('MON MESSAGE', Zend_Validate_NotEmpty::IS_EMPTY);

De souvenir , sinon regarde dans la doc zend_validate dans la dernier page je crois hmm

c'est bien ce que je fais mais le message n'apparait pas !
alors que quand je laisse setRequired(true), il s'affiche...

Hors ligne

 

#6 10-03-2010 13:56:45

gege2061
Nouveau membre
Date d'inscription: 08-03-2010
Messages: 9

Re: modifier le message d'erreur d'un validateur

enzostar a écrit:

Zend_translate me semble bien compliqué... Je ne sais pas ce qu'est le registre.
Du coup, j'ai crée dans mon formulaire un validateur Zend_Validate_NotEmpty() mais le message ne s'affiche pas alors qu'avec setRequired(true) cela s'affiche (mais en anglais..).

Rien de bien compliqué, commence par créé un fichier contenant la traduction des messages d'erreur :

Code:

<?php 

return array(
    '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.",
    'dateNotYYYY-MM-DD'=> "'%value%' n'est pas une date au format AAAA-MM-JJ (exemple : 2000-12-31).",
    'dateInvalid' => "'%value%' n'est pas une date valide.",
    'dateFalseFormat' => "'%value%' n'est pas une date valide au format JJ/MM/AAAA (exemple : 31/12/2000).",
    'notDigits' => "'%value%' ne contient pas que des chiffres.",
    'emailAddressInvalid' => "'%value%' n'est pas une adresse mail valide selon le format adresse@domaine.",
    'emailAddressInvalidFormat' => "'%value%' n'est pas une adresse mail valide.",
    'emailAddressInvalidHostname' => "'%hostname%' n'est pas un domaine valide pour l'adresse mail '%value%'.",
    'emailAddressInvalidMxRecord' => "'%hostname%' n'accepte pas l'adresse mail '%value%'.",
    'emailAddressDotAtom' => "'%localPart%' ne respecte pas le format dot-atom.",
    'emailAddressQuotedString' => "'%localPart%' ne respecte pas le format quoted-string.",
    'emailAddressInvalidLocalPart' => "'%localPart%' n'est pas une adresse individuelle valide.",
    'hostnameInvalidHostname' => "'%value%' n'est pas un nom d'hôte valide.",
    'hostnameInvalidLocalName' => "'%value%' n'est pas un nom d'hôte local valide.",
    'notFloat' => "'%value%' n'est pas un nombre décimal.",
    'notGreaterThan' => "'%value%' n'est pas strictement supéeur à %min%'.",
    'notInt'=> "'%value%' n'est pas un nombre entier.",
    'notLessThan' => "'%value%' n'est pas strictement inférieur à %max%'.",
    'isEmpty' => "Ce champ est vide : vous devez le compléter.",
    'stringEmpty' => "Ce champ est vide : vous devez le compléter.",
    'regexNotMatch' => "'%value%' ne respecte pas le format '%pattern%'.",
    'stringLengthTooShort' => "'%value%' fait moins de %min% caractères.",
    'stringLengthTooLong' => "'%value%' fait plus de %max% caractères."
);

Personnellement, je l'ai mis dans applications/languages/fr/fr.php.

Ensuite dans ton fichier Bootstrap.php, tu ajoute :

Code:

    protected function _initTranslation()
    {
        $translate = new Zend_Translate('array',
                                        APPLICATION_PATH . '/languages/fr/fr.php',
                                        'fr_FR');
        $translate->setLocale('fr_FR');
        Zend_Registry::set('Zend_Translate', $translate);
    }

Attention, à l'encodage du fichier fr.php, il doit être le même que pour les vues (UTF-8 par défaut pour la dernière version de zf), si ce n'est pas le cas tu aura des messages vides.

Hors ligne

 

#7 10-03-2010 14:32:46

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: modifier le message d'erreur d'un validateur

Hello,

Sinon le plus simple est d'utiliser celui fourni avec ZF (à partir de 1.10.1, dossier resources) wink.

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#8 10-03-2010 14:38:21

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

non mais je m'arrache les cheveux !!!
voici le code de mon formulaire qui contient plusieurs validateurs et qui je précise fonctionnent tous et affichent tous le message que j'ai redéfini.
class Default_Model_Form_Connexion extends Zend_Form
{
    public function init()
    {
        $mail = new Zend_Form_Element_Text('mail');
        $mail->setLabel('Adresse Mail:');
        $nonvide=new Zend_Validate_NotEmpty();
        $nonvide->setMessage("veuillez compléter ce champ",Zend_Validate_NotEmpty::IS_EMPTY);
        $mail->addValidator($nonvide);
        $valid_mail=new Zend_Validate_EmailAddress();
        $valid_mail->setMessage("veuillez verifier le format de l'adresse mail",Zend_Validate_EmailAddress::INVALID_FORMAT);
        $mail->addValidator($valid_mail);
        $validator=new Zend_Validate_Db_RecordExists('CLIENT','Mail');
        $validator->setMessage('cette adresse mail est inconnue',Zend_Validate_Db_RecordExists::ERROR_NO_RECORD_FOUND);
        $mail->addValidator($validator);
       

        $pass=new Zend_Form_Element_Password('pass');
        $pass->setLabel('Mot de passe:');
        $pass->setRequired(true)->addErrorMessage("champ requis");
       

           
        $submit = new Zend_Form_Element_Submit('connexion');
        $submit->setAttrib("class","submit");
       

        $this->addElements(array(
        $mail,
        $pass,
        $submit
        ));

        $this->setMethod('post');
        $this->setAction('/public/index/login');
    }
}
seul le message du validateur non vide ne s'affiche pas !
idem pour la méthode de traduction proposée par gege2061
Cela doit venir de l'encodage. Danss mon layout j'ai mis l'encodage en utf-8 pourtant...

Merci pour votre aide encore une fois

Dernière modification par enzostar (10-03-2010 14:51:50)

Hors ligne

 

#9 10-03-2010 16:05:57

gege2061
Nouveau membre
Date d'inscription: 08-03-2010
Messages: 9

Re: modifier le message d'erreur d'un validateur

mikaelkael a écrit:

Sinon le plus simple est d'utiliser celui fourni avec ZF (à partir de 1.10.1, dossier resources) wink.

Merci, je ne 'avais pas vu celui là smile

@enzostar : si c'est un problème tu obtiens un message vide (la puce s'affiche quand même). Vérifie l'encodage du fichier qui contient la classe Default_Model_Form_Connexion.

Hors ligne

 

#10 10-03-2010 16:59:09

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

gege2061 a écrit:

mikaelkael a écrit:

Sinon le plus simple est d'utiliser celui fourni avec ZF (à partir de 1.10.1, dossier resources) wink.

Merci, je ne 'avais pas vu celui là smile

@enzostar : si c'est un problème tu obtiens un message vide (la puce s'affiche quand même). Vérifie l'encodage du fichier qui contient la classe Default_Model_Form_Connexion.

oui c'est bien ça, j'ai la puce mais pas le message, mais comment vérifier et le cas échéant modifier l'encodage ?

Hors ligne

 

#11 10-03-2010 19:48:57

gege2061
Nouveau membre
Date d'inscription: 08-03-2010
Messages: 9

Re: modifier le message d'erreur d'un validateur

enzostar a écrit:

oui c'est bien ça, j'ai la puce mais pas le message, mais comment vérifier et le cas échéant modifier l'encodage ?

Avec un éditeur de texte un minimum avancé, par exemple notepad++ (je suppose que tu travaille sous Windows ?).

Hors ligne

 

#12 11-03-2010 08:47:49

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

et bien non ! lol je suis sous linux

Hors ligne

 

#13 11-03-2010 10:22:02

gege2061
Nouveau membre
Date d'inscription: 08-03-2010
Messages: 9

Re: modifier le message d'erreur d'un validateur

enzostar a écrit:

et bien non ! lol je suis sous linux

Sous Gedit (le seul éditeur que j'utilise), il suffit de faire Enregistrer sous et tu as une option pour modifier l'encodage, sinon regarde dans les menus (pour Kate peut-être Outils->encodage) wink

Hors ligne

 

#14 11-03-2010 14:42:24

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: modifier le message d'erreur d'un validateur

ok je vais tester.
merci beaucoup !

Hors ligne

 

#15 12-03-2010 05:40:53

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: modifier le message d'erreur d'un validateur

Oui l'encodage. Si tu mets des accents dan tes messages alors que tu es en UTF8 .... t'auras que la puce

Essaye cette fonction -> utf8_encode('mon message a moi avec des accent genre é à ^ô ! % ')
Car j'ai tenter de changer l'encodage mais du coup quand j'insère dans ma base j'ai pas les bon caractère en gros je tournais en rond du coup j'ai laissé coté car ca me gonflais lool et j'utilise utf8_encode hmm

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