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 :

affichage d'erreur de validation d'un formulaire Symfony2.1


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Points : 18
    Points
    18
    Par défaut affichage d'erreur de validation d'un formulaire Symfony2.1
    bonjour,
    j'ai un probleme dans mon formulaire : les ereurs de validations ne saffichent pas à coté des elements correspondants meme si je les ai mis a coté
    voila mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    {% extends "gestionConferenceApplicationBundle::layout.html.twig" %}
    {% block content %}
    <div id="welcome">
        <div class="content">
     
            <form action="" method="post" {{ form_enctype(form) }}>
                    {{ form_errors(form) }}
     
                    <table>
                        <tr>
                            <td>{{ form_label(form.titre, 'Titre : ') }}</td>                        
                            <td>{{ form_widget(form.titre) }}</td>
                            <td>{{ form_errors(form.titre) }}</td>
                        </tr>
                        <tr>
                            <td>{{ form_label(form.ville, 'Ville : ') }}</td>
     
                            <td>{{ form_widget(form.ville) }}</td>
                            <td>{{ form_errors(form.ville) }}</td>
                        </tr>
                        <tr>
                            <td>{{ form_label(form.lieu, 'Lieu : ') }}</td>
     
                            <td>{{ form_widget(form.lieu) }}</td>
                            <td>{{ form_errors(form.lieu) }}</td>
                        </tr>
                        <tr>
                            <td>{{ form_label(form.date_debut, 'Date de début : ') }}</td>
     
                            <td>{{ form_widget(form.date_debut) }}</td>
                            <td>{{ form_errors(form.date_debut) }}</td>
                        </tr>
                        <tr>
                            <td>{{ form_label(form.date_fin, 'Date de fin : ') }}</td>
     
                            <td>{{ form_widget(form.date_fin) }}</td>
                            <td>{{ form_errors(form.date_fin) }}</td>
                        </tr>
                        <tr>
                            <td>{{ form_label(form.nbMin, 'Nombre minimal de participants : ') }}</td>                        
                            <td>{{ form_widget(form.nbMin) }}</td>
                            <td>{{ form_errors(form.nbMin) }}</td>
                        </tr>
                       <tr>
                            <td>{{ form_label(form.nbMax, 'Nombre maximal de participants : ') }}</td>                        
                            <td>{{ form_widget(form.nbMax) }}</td>
                            <td>{{ form_errors(form.nbMax) }}</td>
                        </tr>
     
                        <tr>
                            <td>{{ form_label(form.dateLimiteInscription, 'Date limite d inscription : ') }}</td>                        
                            <td>{{ form_widget(form.dateLimiteInscription) }}</td>
                            <td>{{ form_errors(form.dateLimiteInscription) }}</td>
                        </tr>
                        {{ form_rest(form) }}
                        <tr>
                            <td align="center" colspan=3 >
                                <input type="submit" style="width: 80px;height: 30px;margin-right: 25px;" value="valider" />
                                <input type="reset" style="width: 80px;height: 30px;" value="initialiser" />
                            </td>                        
                        </tr>
     
     
     
     
                    </table>
                </form>
            </div>
     
        </div>
     
    {% endblock %}
    et voila le champ de validation dont je parle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /**
         * @var integer $nbmax
         *@Assert\Min(limit = "10", message = "veuillez saisir plus que 10")
         * @ORM\Column(name="nbMax", type="integer", nullable=false)
         */
        private $nbmax;
    l'erreur de validation s'affiche en haut de page

    quelqu'un saurait il comment resoudre ce probleme

    merci bien

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    supprime {{ form_errors(form) }} pour voir ?

    Peux tu mettre l'action qui valide le formulaire aussi svp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Points : 18
    Points
    18
    Par défaut
    lorsque je la supprime rien ne s'affiche la page se charge une autre fois et cayé

    voila la function associé dans le controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public function creerConferenceAction($id = null) {
     
            $message = '';
            if (isset($id)) {
                $conference = $this->getDoctrine()
                        ->getRepository('gestionConferenceApplicationBundle:Conference')
                        ->find($id);
                if (!$conference) {
                    throw $this->createNotFoundException('No conference found for id ' . $id);
                }
            }else{
                $conference = new Conference();            
            }
     
                $form = $this->createFormBuilder($conference)
                    ->add('titre', 'text')
                    ->add('ville', 'text')
                    ->add('lieu', 'text')
                    ->add('date_debut', 'date', array(
                        'widget' => 'single_text',
                        'format' => 'yyyy-MM-dd',
                        ))
                     ->add('date_fin', 'date')
                    ->add('nbMin', 'integer')
                    ->add('nbMax', 'integer')
                    ->add('dateLimiteInscription', 'date')
                    ->getForm();
     
     
            $request = $this->getRequest();
            if ($request->isMethod('POST')) {
                $form->bind($request);
                if ($form->isValid()) {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($conference);
                    $em->flush();
                    return $this->redirect($this->generateUrl('_acceuil'));
                }
            }
     
            return $this->render('gestionConferenceApplicationBundle:acceuil:creerConference.html.twig', array(
                        'form' => $form->createView(), 
                    ));
        }

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    De mon point de vue, tout à l'air correct pourtant.

    As tu essaye juste de rendre le formulaire avec le helper {{ form_widget(form) }} et rien d'autre

    Voir si les erreurs s'affichent correctement

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Points : 18
    Points
    18
    Par défaut
    je viens de tester avec le helper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    {% extends "gestionConferenceApplicationBundle::layout.html.twig" %}
    {% block content %}
    <div id="welcome">
        <div class="content">
     
            <form action="" method="post" {{ form_enctype(form) }}>
                   {{ form_widget(form) }}
     
                    <table>
     
                        {{ form_rest(form) }}
                        <tr>
                            <td align="center" colspan=3 >
                                <input type="submit" style="width: 80px;height: 30px;margin-right: 25px;" value="valider" />
                                <input type="reset" style="width: 80px;height: 30px;" value="initialiser" />
                            </td>                        
                        </tr>
     
     
     
     
                    </table>
                </form>
            </div>
     
        </div>
     
    {% endblock %}
    dans ce cas il m'affiche l'erreur en haut

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Points : 18
    Points
    18
    Par défaut
    je viens de trouver l'erreur : je n'ai pas bien copier le nom du champ a partir de l'entité :
    j'aurai du ecrire nbmin aulieu de nbMin ...

    mais maintenant au lieu d'ajouter les annotations @assert dont je n'ai pas trouvé de details dans la doc de symfony

    j'aimerai ajouter un fichier de validation
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # src/gestionConference/ApplicationBundle/Resources/config/validation.yml
    gestionConference\ApplicationBundle\Entity\Conference:
      properties:
        nbmin:
          - Range:
              min: 120
              minMessage: You must be at least 120cm tall to enter
    mais malgré que je l'ai ajouté il est tout a fait ignoré par l'application

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Pourquoi ce revirement ?

    Je ne pourrais pas t'aider pour le chargement du validator.yml, je ne l'utilise pas.

    Pour les détails des annotations, il faut aller dans le code source, c'est le meilleur moyen d'en apprendre encore plus sur Symfony

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Points : 18
    Points
    18
    Par défaut
    juste par curiosité
    pourquoi la validation avec les annoations @assert n'est pas documenté par Symfony alors qu'elle est plus pratique que les fichiers de validations (qui n'ont pas marché chez loi )

  9. #9
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Désolé mais je trouve, pour y être aller à l'instant, les @assert sont bien expliqués dans la doc Symfony.

    Pour ton fichier validator, j'ai l'impression que tu fait la même erreur que précédemment au niveau du nom de ton champ

Discussions similaires

  1. Gérer les erreurs de validation d'un formulaire
    Par laloune dans le forum Langage
    Réponses: 6
    Dernier message: 04/12/2013, 09h32
  2. Réponses: 8
    Dernier message: 22/04/2011, 21h27
  3. Réponses: 3
    Dernier message: 19/09/2007, 17h11
  4. Réponses: 10
    Dernier message: 04/09/2007, 13h38
  5. [Struts Validator] probleme affichage des erreurs
    Par Morpheus2144 dans le forum Struts 1
    Réponses: 7
    Dernier message: 24/01/2006, 15h25

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