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

Symfony PHP Discussion :

Séparer l'affichage des erreurs de formulaires


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Points : 100
    Points
    100
    Par défaut Séparer l'affichage des erreurs de formulaires
    Bonjour à tous !!


    Dans getGlobalError() j'ai des erreurs qui viennent des validateurs du champ concerné mais aussi du mergePostValidator().

    Le problème c'est qu'a l'affichage ces deux types d'erreur sont dans le getGlobalErreur() sous forme de liste ul li.

    La configuration de mon design est telle que je ne peux pas afficher 2 li ...

    J'ai donc trouvé plusieurs méthodes "salles" qui me permettent de supprimer une ligne :
    - un div à hauteur fixe avec un overflow hidden...
    - explode l'erreur pour afficher que la premiere li

    Y a t il un moyen de les différencier autrement ?

    Merci d'avance !!

  2. #2
    Membre actif

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Points : 220
    Points
    220
    Par défaut
    Je viens de vérifier le fonctionnement du renderGlobalsErrors(), le format HTML se trouve dans les attributs (protected)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $errorListFormatInARow     = "  <ul class=\"error_list\">\n%errors%  </ul>\n",
    $errorRowFormatInARow      = "    <li>%error%</li>\n",
    $namedErrorRowFormatInARow = "    <li>%name%: %error%</li>\n",
    de la classe sfWidgetFormSchemaFormatter.

    A priori de ce que j'en ai vu à partir de ton widgetSchema tu peux récupérer une instance de cette classe(getFormFormatter) et à partir de là appeller les méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function setErrorRowFormat($format)
    public function setErrorListFormatInARow($format)
    public function setErrorRowFormatInARow($format)
    etc..
    Grosso modo dans ta classe form le code devrait ressembler à quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $rowList = '<table>%errors%</table>\n'
    $rowFormatInRow = '<tr><td>%error%</td></tr>\n'
    $this->widgetschema->getFormFormatter()->setErrorListFormatInARow($rowList)
    $this->widgetschema->getFormFormatter()->setErrorRowFormatInARow($rowFormatInRow)
    Je te laisse regarde le code de ces classes plus en détail.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Points : 100
    Points
    100
    Par défaut
    hum...

    J'ai pas regardé en détail mais tu me propose juste de modifier la forme d'affichage à la "source".

    Au final c'est toujours avec getGlobalError() que je récupère les deux "types" d'erreur...

    Je regarde quand même de plus près tout ca !!

  4. #4
    Membre actif

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Points : 220
    Points
    220
    Par défaut
    Ton problème concernait le fait que ton design ne t'autorise pas à utiliser 2 li. Cette solution te permet de ne pas en utiliser du tout.

    Après si tu veux différencier les erreurs, tu peux avec cette méthode éventuellement ajouter une classe sur chacun des éléments HTML

    par exemple pour une ligne au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <li>%error%</li>\n
    Tu peux essayer (à vérifier que ca fonctionne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <li class="%name%_error">%error%</li>\n
    Tu auras une classe différente pour chaque erreur.

    Edit:
    Après j'ai trouvé ce code snippets qui peut t'intéresser (à la fin après la partie sur CSRF token)
    Où c'est à peu près la même chose sauf qu'il utilise une classe à lui qui hérite de sfWidgetFormSchemaFormatter

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Points : 100
    Points
    100
    Par défaut
    oui voila, j'avais bien compris que c'était pour modifier la mise en forme du message d'erreur...

    Le problème c'est que je n'es pas la place pour 2 erreurs...

    Ca peut être utile de placer les deux types d'erreur a deux endroits différents...

    Ya le premier type c'est: required, invalid ...
    et l'autre c'est de mergePreValidator: pour dire que les deux champs doivent être identique par exemple.

    Dans mon cas c'est pour les mots de passe lors d'une inscription.
    Si un seul mot de passe est renseigné je me retrouve avec 2 erreur pour un seul champ: "champ obligatoire" et "les mdp doivent être identique"

  6. #6
    Membre actif

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Points : 220
    Points
    220
    Par défaut
    Dans ce cas, ne peux-tu pas utiliser simplement la méthode renderError() sur chacun de tes champs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form['nom_du_widget']->renderError();
    Comme ça tu les positionnes où tu veux.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Points : 100
    Points
    100
    Par défaut
    C'est ce que je fais mais les globalErreur retourne les 2 types...

Discussions similaires

  1. affichage des erreures du formulaire
    Par car00x dans le forum Django
    Réponses: 1
    Dernier message: 22/12/2012, 12h00
  2. Réponses: 9
    Dernier message: 21/09/2011, 16h48
  3. Affichage des erreurs de formulaires
    Par vladimire dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2010, 21h40
  4. [1.x] Modification de l'affichage des erreurs des formulaires
    Par asmodaiii dans le forum Symfony
    Réponses: 5
    Dernier message: 10/09/2009, 17h42
  5. Réponses: 3
    Dernier message: 19/09/2007, 18h11

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