Bonjour,
J'aimerai comprendre pourquoi le formulaire de mon bundle lorsqu'il est inclus dans un template parent avec twig par la fonction render() et la fonction controller() ne fonctionne pas.
Le code "$form->handleRequest($request)->isValid()" ne fonctionne jamais ni même l'affichage des erreurs par twig "{{ form_errors(form) }}".
Lorsque j'envoie le formulaire la page se recharge mais rien ne se passe, ni enregistrement en BDD, ni erreur php, ni erreur Symfony2, ni message d'erreur du formulaire affiché par twig. Je reviens uniquement à la même page!
Voici mon bundle, le fichier routing.yml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 dg_apply: path: /apply defaults: { _controller: DGApplyBundle:Default:index }
le controller qui contient la méthode indexAction:
Le template twig du bundle inclus:
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 <?php namespace DG\ApplyBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use DG\ApplyBundle\Entity\Apply; use DG\ApplyBundle\Form\ApplyType; class DefaultController extends Controller { public function indexAction(Request $request) { $apply = new Apply(); $form = $this->get('form.factory')->create(new ApplyType(), $apply); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($apply); $em->flush(); echo 'Apply enregistrée!'; } else { echo 'Apply non enregistrée!'; } return $this->render ( 'DGApplyBundle:Default:index.html.twig', array ( 'form' => $form->createView() ) ); } } ?>
L'endroit où il est inclus dans le template parent d'un autre bundle
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 <div class="section-row half-padding-bottom"> <div class="container"> <div class="row"> <div class="col-lg-12"> <h1 class="section-title show-counter"> Appliquer chez W<span class="text-primary">ÿ</span>rd <small>Vous vous sentez à la hauteur, venez affronter les plus monstrueuses créatures.</small> </h1> </div> </div> <div class="row"> <div class="col-md-12"> <div class="alert alert-danger text-center"> Tous les champs sont obligatoires </div> {{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }} {{ form_errors(form) }} <div class="form-group"> <div class="col-md-12"> {{ form_widget(form.armory, {'attr': {'class': 'form-control', 'placeholder': 'URL de ton armurerie'}}) }} {{ form_errors(form.armory) }} </div> </div> <div class="form-group"> <div class="col-md-12"> {{ form_widget(form.login, {'attr': {'class': 'form-control', 'placeholder': 'Ton nom de joueur'}}) }} {{ form_errors(form.login) }} </div> </div> <div class="form-group"> <div class="col-md-12"> {{ form_widget(form.postuler, {'attr': {'class': 'btn btn-sm btn-block btn-primary'}}) }} </div> </div> {{ form_rest(form) }} {{ form_end(form) }} </div> </div> </div> </div>
Comme dit le formulaire s'affiche bien mais ne fonctionne pas lorsque je l'envoie. Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <section id="apply-form" class="section"> <div class="section-row-container"> {{ render(controller("DGApplyBundle:Default:index")) }} </div> </section>
Partager