IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Message d'avertissement customiser avec Zend Form [ZF 1.9]


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Par défaut Message d'avertissement customiser avec Zend Form
    Bonjour à tous,

    Je cherche à avoir un message customiser quand un champ qui est "required" n'est pas rempli.
    Pour l'instant le message d'erreur, s'affiche correctement mais il est en anglais...Moi j'aimerai le redéfinir et le mettre en français

    C'est tout bête mais je ne sais pas où et quoi regarder/lire pour trouver cette info.

    Je vous remercie par avance du coup de main !

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    Les Zend_Form et Zend_Form_Elements fonctionnent super bien avec Zend_Translate.

    Le plus simple pour commencer est d'utiliser le format de fichier de traduction Zend_Translate_Adapter_Array qui revient à simplement créer un fichier php avec dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return array(
      'clédetraduction' => 'traduction'
    );
    Quand on veut traduire les messages de validation, il suffit de traduire en prenant comme clé les constantes définies par les validateurs.
    Par exemple Zend_Validate_NotEmpty défini 2 const Zend_Validate_NotEmpty::INVALID et Zend_Validate_NotEmpty::IS_EMPTY.
    Il suffit d'ajouter dans le fichier de traduction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return array(
      Zend_Validate_NotEmpty::IS_EMPTY => 'Vous devez remplir ce champs',
    );
    Et ainsi de suite pour chaque validateur que tu utilises.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Par défaut
    Merci pour ta réponse

    Mais je ne la comprends qu'en partie.
    En effet, le code que tu me proposes est sous la forme de return...
    Or, je ne vois pas du tout où placé ces returns...

    De mon coté, j'ai trouvé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nomPlanification =  new Zend_Form_Element_Text('nomplanification');
    $nomPlanification->setRequired(true);
    $french = array("isEmpty" => "Le champ est vide");
    $translate = new Zend_Translate('array', $french, 'fr');
    $nomPlanification->setTranslator($translate);
    Mais ça ne marche pas

    Donc je veux bien une explication du code proposé où alors une utilisation fonctionnelle du code que je propose

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    Ok, ma réponse était sans doute un peu trop raccourcie alors je vais détailler

    Le return que tu ne comprends pas est en fait une utilisation d'un fonctionnalité PHP
    ...Si le script courant était include() ou require(), alors le contrôle est rendu au script appelant, et la valeur retournée sera utilisée comme résultat de la fonction include()...
    Ce qui veux dire que lorsque je veux traduire mon appli, perso j'ai rajouté un rep /i18n au même niveau que /controllers, /models, etc avec dedans des fichiers fr.php, en.php etc...

    Ces fichiers contiennent uniquement les traductions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    return array(
      'clédetraduction' => 'traduction'
    );
    Puis j'instancie un Zend_Translate comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $i18n = new Zend_Translate('array', [chemin du fichier de traduction]);
    Et enfin, je l'affecte au formulaires avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->setTranslator($i18n)

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Par défaut
    Ok merci pour cette solution

    J'en ai mis une autre en place...
    Je la posterai demain, votre avis m'intéresse, vous me direz si ce que j'ai fait est "moche" ^^

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Par défaut
    Voila "ma" solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $nomPlanification =  new Zend_Form_Element_Text('nomplanification');
    $nomPlanification->setRequired(true);
    $userNotEmpty = new Zend_Validate_NotEmpty();
    $userNotEmpty->setMessage('Le nom de la planification est requis et ne dois pas être vide.', Zend_Validate_NotEmpty::IS_EMPTY);
     
    $validLength = new Zend_Validate_StringLength(1, 30);
    $validLength->setMessage("Le nom de la planification est trop court", Zend_Validate_StringLength::TOO_SHORT);
    $validLength->setMessage("Le nom de la planification est trop long", Zend_Validate_StringLength::TOO_LONG);
    $validLength->setMessage("Le nom de la planification doit être de type <string>", Zend_Validate_StringLength::INVALID);
    Je serai intéressé par un exemple concret de votre solution implémentant une de mes traductions, pour être sûr que je comprends bien...

    Je vous remercie par avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/09/2014, 14h59
  2. [ZF 1.10] zend form avec le champs affiché de la base
    Par riadh.cheniour dans le forum Zend_Form
    Réponses: 4
    Dernier message: 10/01/2012, 21h28
  3. [Zend Form] Traduction des messages d'erreur
    Par Coyote Terrorist dans le forum Zend_Form
    Réponses: 8
    Dernier message: 01/08/2011, 19h33
  4. message d'erreur avec zend framework
    Par Invité dans le forum Zend Framework
    Réponses: 3
    Dernier message: 19/05/2010, 22h40
  5. Message d'avertissement avec CODEBLOCKS
    Par mouhammed dans le forum C
    Réponses: 4
    Dernier message: 01/11/2007, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo