1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 22119 -->
4 <sect1 id="zend.validate.messages">
5 <title>Messages de validation</title>
8 Chaque validateur basé sur <classname>Zend_Validate</classname> propose un ou plusieurs messages
9 dans le cas d'un échec. Vous pouvez utiliser ces informations pour créer vos propres messages
10 ou pour traduire les messages présents.
14 Ces messages sont représentés par des constantes se trouvant en haut de chaque classe de validateur.
15 Voyons <classname>Zend_Validate_GreaterThan</classname> pour un exemple complet:
18 <programlisting language="php"><![CDATA[
19 protected $_messageTemplates = array(
20 self::NOT_GREATER => "'%value%' n'est pas plus grande que '%min%'",
25 Comme vous le voyez, la constante <constant>self::NOT_GREATER</constant> fait référence à un échec et est
26 utilisée comme clé, le message lui-même est utilisé comme valeur dans le tableau des messages.
30 Vous pouvez récupérer les templates de messages d'un validateur en utilisant la méthode
31 <methodname>getMessageTemplates()</methodname>. Elle vous retourne le tableau comme vu ci-dessus qui contient
32 tous les messages que le validateur pourrait retourner en cas d'échec de validation.
35 <programlisting language="php"><![CDATA[
36 $validator = new Zend_Validate_GreaterThan();
37 $messages = $validator->getMessageTemplates();
41 La méthode <methodname>setMessage()</methodname> permet de modifier un message unique correspondant à un
42 cas particulier d'échec de validation.
45 <programlisting language="php"><![CDATA[
46 $validator = new Zend_Validate_GreaterThan();
47 $validator->setMessage('Entrez une valeur plus petite', Zend_Validate_GreaterThan::NOT_GREATER);
51 Le deuxième paramètre indique le cas d'échec à surcharger. Lorsque vous omettez ce paramètre,
52 alors le message précisé sera affecté comme message pour tous les cas d'échec possibles du validateur.
55 <sect2 id="zend.validate.messages.pretranslated">
56 <title>Utiliser les messages de validations pré-traduits</title>
59 Zend Framework est livré avec plus de 45 validateurs différents et plus de 200 messages d'échecs.
60 Cela peut-être pénible de tous les traduire. Pour votre convenance, Zend Framework est livré avec
61 des messages d'échec pré-traduits. Vous les trouverez dans <filename>/resources/languages</filename>
62 de votre installation de Zend Framework.
66 <title>Chemin utilisé</title>
69 Les fichiers de ressources sont en dehors du dossier library car les traductions sont sensées
70 être en dehors de ce chemin.
75 Donc pour traduire les messages de validation en français par exemple, tout ce qu'il y a à faire est
76 d'attacher un objet de traduction à <classname>Zend_Validate</classname> en utilisant les fichiers
77 de ressources (pré-traductions).
80 <programlisting language="php"><![CDATA[
81 $translator = new Zend_Translate(
84 'content' => '/resources/languages',
85 'locale' => $language,
86 'scan' => Zend_Translate::LOCALE_DIRECTORY
89 Zend_Validate_Abstract::setDefaultTranslator($translator);
93 <title>Adaptateur de traduction utilisé</title>
96 L'adaptateur array a été utilisé, ceci pour permettre une modification simple des
97 messages pré-traduits.
102 <title>Langues supportées</title>
105 Cette caractéristique de pré-traduction est jeune, donc le nombre de langues supportées peut
106 ne pas être complet. De nouvelles langues seront ajoutées dans les sorties futures.
110 Vous pouvez aussi partir de ces fichiers pré-traduits pour créer vos propres traductions,
116 <sect2 id="zend.validate.messages.limitation">
117 <title>Limiter la taille d'un message de validation</title>
120 Il peut être nécessaire parfois de limiter la taille en caractères des messages d'erreur
121 retournés. par exemple si une vue n'autorise que 100 caractères par ligne.
122 <classname>Zend_Validate</classname> propose une telle option.
126 La taille actuelle est
127 <methodname>Zend_Validate::getMessageLength()</methodname>. -1 signifie que le message ne
128 sera pas tronqué et entièrement retourné, c'est le comportement par défaut.
132 Pour limiter la taille, utilisez
133 <methodname>Zend_Validate::setMessageLength()</methodname>. Lorsque la taille excède cette valeur,
134 le message sera alors tronqué et suivi de '<emphasis>...</emphasis>'.
137 <programlisting language="php"><![CDATA[
138 Zend_Validate::setMessageLength(100);
142 <title>Où ce paramètre est-il utilisé ?</title>
145 La taille des messages affecte aussi les messages personnalisés enregistrés, dès
146 que le validateur considéré étend <classname>Zend_Validate_Abstract</classname>.