Salut,
J'ai un petit problème, lorsque j'ai 2 formulaires sur une même page et que j'en valide un, le deuxième est aussi validé...
Une piste pour m'aider ?
Merci d'avance !
Salut,
J'ai un petit problème, lorsque j'ai 2 formulaires sur une même page et que j'en valide un, le deuxième est aussi validé...
Une piste pour m'aider ?
Merci d'avance !
Qu'est ce que tu entends pas le deuxième est validé ?
Peux tu mettre les codes de tes actions et de test templates pour que l'on puisse t'aider ?
Dans le dossier Form j'ai le fichier Contact_footerForm.php
Associé au template :
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 namespace Site\DefiscBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class Contact_footerForm extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('nom') ->add('prenom', 'text' , array( 'required' => false, 'label' => 'Prénom', )) ->add('adresse_mail', 'text' , array( 'required' => false, 'label' => 'Adresse email' )) ->add('telephone', 'text' , array( 'required' => false, 'label' => 'Téléphone' )) ->add('message', 'textarea') ; } public function getName() { return 'contact_footer'; } }
Ensuite sur la même page j'ai le 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 <h3>Contactez nous !</h3> <form action="" method="post" {{ form_enctype(form) }} name="contact_footer"> <div class="gauche"> {{ form_label(form.nom) }} {{ form_errors(form.nom) }} {{ form_widget(form.nom) }} {{ form_label(form.prenom) }} {{ form_errors(form.prenom) }} {{ form_widget(form.prenom) }} {{ form_label(form.adresse_mail) }} {{ form_errors(form.adresse_mail) }} {{ form_widget(form.adresse_mail) }} {{ form_label(form.telephone) }} {{ form_errors(form.telephone) }} {{ form_widget(form.telephone) }} </div> <div class="droite"> {{ form_label(form.message) }} {{ form_errors(form.message) }} {{ form_widget(form.message) }} {{ form_rest(form) }} <input type="submit" value=" Envoyer " class="submit" /> </div> <div class="error"> {{ form_errors(form) }} </div> </form>
Avec le template :
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 namespace Site\DefiscBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class InscriptionForm extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('nom') ->add('prenom', 'text' , array( 'required' => false, 'label' => 'Prénom', )) ->add('adresse_mail', 'text' , array( 'required' => false, 'label' => 'Adresse email' )) ->add('telephone', 'text' , array( 'required' => false, 'label' => 'Téléphone' )) ->add('rappel', 'choice', array('choices' => array('O'=>'Oui','N'=>'Non'), 'multiple' => false, 'expanded' => true, 'label' => 'Souhaitez vous être contacté par un conseiller', 'attr' => array('class' => 'contact_rappel') ) ) ->add('horaire_rappel', 'text' , array( 'required' => false, 'label' => 'Horaire préféré pour être contacté' )) ; } public function getName() { return 'inscription'; } }
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 <form action="" method="post" {{ form_enctype(form) }}> <div class="error"> {{ form_errors(form) }} </div> <div> {{ form_label(form.nom) }} {{ form_errors(form.nom) }} {{ form_widget(form.nom) }} {{ form_label(form.prenom) }} {{ form_errors(form.prenom) }} {{ form_widget(form.prenom) }} {{ form_label(form.adresse_mail) }} {{ form_errors(form.adresse_mail) }} {{ form_widget(form.adresse_mail) }} {{ form_label(form.telephone) }} {{ form_errors(form.telephone) }} {{ form_widget(form.telephone) }} <span class="long">{{ form_label(form.rappel) }}</span> {{ form_errors(form.rappel) }} {{ form_widget(form.rappel) }} {{ form_label(form.horaire_rappel) }} {{ form_errors(form.horaire_rappel) }} {{ form_widget(form.horaire_rappel) }} </div> {{ form_rest(form) }} <input type="submit" value=" Envoyer " class="submit" /> </form>
Et dans ton controller ?
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 <?php namespace Site\DefiscBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Site\DefiscBundle\Entity\Contact; use Site\DefiscBundle\Entity\Article; use Site\DefiscBundle\Form\ContactForm; use Site\DefiscBundle\Form\InscriptionForm; use Site\DefiscBundle\Form\Contact_footerForm; class ContactController extends Controller { public function inscriptionAction() { $contact = new Contact(); $form = $this->container->get('form.factory')->create(new InscriptionForm(), $contact); $request = $this->container->get('request'); if ($request->getMethod() == 'POST'){ $form->bindRequest($request); if ($form->isValid()){ $em = $this->container->get('doctrine')->getEntityManager(); $em->persist($contact); $em->flush(); $contenu = 'Nom : '.$contact->getNom().' Prénom : '. $contact->getPrenom().' Adresse mail : '. $contact->getAdresseMail().' Téléphone : '. $contact->getTelephone().' Demande un rappel : '. $contact->getRappel().' Horaire souhaité : '. $contact->getHoraireRappel().' Message : '. $contact->getMessage(); $message = \Swift_Message::newInstance() ->setSubject('Contact sur le site') ->setFrom('contact@qqq.fr') ->setTo('sss@qqq.net') ->setBody($contenu); $this->get('mailer')->send($message); return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:merci.html.twig'); } } return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:inscription.html.twig', array( 'form' => $form->createView(), )); } public function contactAction() { $em = $this->container->get('doctrine')->getEntityManager(); $article = $em->getRepository('SiteDefiscBundle:Article')->find('4'); $contact = new Contact(); $form = $this->container->get('form.factory')->create(new ContactForm(), $contact); $request = $this->container->get('request'); if ($request->getMethod() == 'POST'){ $form->bindRequest($request); if ($form->isValid()){ $em = $this->container->get('doctrine')->getEntityManager(); $em->persist($contact); $em->flush(); $contenu = 'Nom : '.$contact->getNom().' Prénom : '. $contact->getPrenom().' Adresse mail : '. $contact->getAdresseMail().' Téléphone : '. $contact->getTelephone().' Demande un rappel : '. $contact->getRappel().' Horaire souhaité : '. $contact->getHoraireRappel().' Message : '. $contact->getMessage(); $message = \Swift_Message::newInstance() ->setSubject('Contact sur le site') ->setFrom('contact@qqq.fr') ->setTo('sss@qqq.net') ->setBody($contenu) ; $this->get('mailer')->send($message); return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:grand_merci.html.twig', array( 'article' => $article, )); } } return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:contact.html.twig', array( 'form' => $form->createView(), 'article' => $article, )); } public function Contact_footerAction() { $contact = new Contact(); $form = $this->container->get('form.factory')->create(new Contact_footerForm(), $contact); $request = $this->container->get('request'); if ($request->getMethod() == 'POST'){ $form->bindRequest($request); if ($form->isValid()){ $em = $this->container->get('doctrine')->getEntityManager(); $em->persist($contact); $em->flush(); $contenu = 'Nom : '.$contact->getNom().' Prénom : '. $contact->getPrenom().' Adresse mail : '. $contact->getAdresseMail().' Téléphone : '. $contact->getTelephone().' Demande un rappel : '. $contact->getRappel().' Horaire souhaité : '. $contact->getHoraireRappel().' Message : '. $contact->getMessage(); $message = \Swift_Message::newInstance() ->setSubject('Contact sur le site') ->setFrom('contact@qqq.fr') ->setTo('sss@qqq.net') ->setBody($contenu); $this->get('mailer')->send($message); return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:merci.html.twig'); } } return $this->container->get('templating')->renderResponse('SiteDefiscBundle:Contact:contact_footer.html.twig', array( 'form' => $form->createView(), )); } } ?>
dans ton template l'attribut action ne contient aucune valeur (action=""). Je pense que ça vient de la. Il faut que tu mette l'action que tu souhaite exécuter
genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <form action="{{ path('action_souhaitee') }}" method="post" {{ form_enctype(form) }}> ... </form>
Mais l'action est sur la même page pour les deux il me semble
Tu doit avoir deux actions différentes dans ton contrôleur en fonction du formulaire validé ou une action pour les deux avec un champs en hidden qui te dit quel formulaire a été validé.
Enfin en tous cas suit ce que t'a écrit bilbot...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager