Bonjour,
Je ne suis pas un as de symfony, disons que j'arrive à peu près à me débrouiller. Je butte sur un problème depuis plusieurs jours et malgré de nombreuses recherches et tests, je suis vraiment bloqué.
Mon objectif est de faire une page de réservation de plongées (pour un club). La photo ci-dessous sera plus parlante qu'un long discours.
Mon problème est que je n'arrive pas à obtenir que lorsque je clique l'un des boutons "enregistrer", ce bouton soit reconnu et qu'il me permette d'appliquer le bon traitement dans le controller.
J'ai bien sûr regardé la méthode isClicked sur la doc de symfony.com mais impossible de trouver comment la mettre en œuvre pour mon cas malgré des heures de recherches et d'essais.
Ci-dessous, le code de mon controller et de ma vue (pour une seule journée sur les 6)
Je pense que des personnes plus calées que moi verront certainement d'autres manières de faire plus sophistiquées que la mienne.
Mais, je viens chercher sur ce forum une aide sur ... la manière de reconnaître un bouton et les syntaxes qu'il faut utiliser dans le controller et la vue.
Si déjà je pouvais avoir cette solution ce serait parfait.
Reste que je ne suis pas fermé à de bons conseils pour améliorer mon code, mais mon objectif principal à ce stade est ce problème de syntaxe pour faire reconnaître un bouton.
Merci d'avance à ceux qui prendront quelques minutes pour me répondre.
Et le code (une partie) de ma vue
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 <?php namespace App\Controller; use App\Entity\Dive; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class DiveController extends AbstractController { /** * @Route("/dive", name="inscrit") */ public function inscrit(Request $request, EntityManagerInterface $manager) { $dive = new Dive(); $start = new \DateTime("2021/03/14"); $repo = $this->getDoctrine()->getManager()->getRepository(Dive::class); $mardis = $repo->findBy(array('jour' => 'mardi')); $mercredis = $repo->findBy(array('jour' => 'mercredi')); $jeudis = $repo->findBy(array('jour' => 'jeudi')); $samedis = $repo->findBy(array('jour' => 'samedi')); $samedis2 = $repo->findBy(array('jour' => 'samedi2')); $dimanches = $repo->findBy(array('jour' => 'dimanche')); $form = $this->createFormBuilder()->getForm()->handleRequest($request); if($form->isSubmitted() && $form->isValid()) { $clicked = $request->request->get('clicked'); dd($clicked); $user = $this->getUser(); $dive -> setNom($this->getUser()->getNom()); $dive -> setPrenom($this->getUser()->getPrenom()); $dive -> setNiveau($this->getUser()->getNiveau()); //dd($request); if($clicked === 'mardi'){ $dive -> setDate($start->modify('+2 day')); $dive -> setJour('mardi'); } if($clicked === 'mercredi'){ $dive -> setDate($start->modify('+3 day')); $dive -> setJour('mercredi'); } if($request->request->get('jeudi')){ $dive -> setDate($start->modify('+4 day')); $dive -> setJour('jeudi'); } if($request->request->get('samedi')){ $dive -> setDate($start->modify('+6 day')); $dive -> setJour('samedi'); } if($request->request->get('samedi2')){ $dive -> setDate($start->modify('+6 day')); $dive -> setJour('samedi2'); } if($request->request->get('dimanche')){ $dive -> setDate($start->modify('+7 day')); $dive -> setJour('dimanche'); } $manager->persist($dive); $manager->flush(); return $this->redirectToRoute('inscrit'); } return $this->render('dive/dive.html.twig', [ 'start' => $start, 'form' => $form->createView(), 'mardis' => $mardis, 'mercredis' => $mercredis, 'jeudis' => $jeudis, 'samedis' => $samedis, 'samedis2' => $samedis2, 'dimanches' => $dimanches ]); } }
Code twig : 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 {% extends 'base.html.twig' %} {% block title %}Réservation{% endblock %} {% block body %} <div class="container"> <h1>Réservation des plongées</h1> {% if is_granted('ROLE_USER') %} <h5>Bienvenue <strong>{{app.user.prenom }}</strong> dans la réservation des plongées.</h5> {% endif %} <br> <div class="row"> <div class="col s12 m4"> <div class="card"> <div class="card-Title teal #bbdefb blue lighten-4"> <span class="card-title"><strong> Mardi</strong> - {{ start|date_modify("+2 day")|date("d/m/Y") }} </span> </div> <div class="card-content"> <table> <thead> <tr> <th>Nom</th> <th>Prénom</th> <th>Niveau</th> </tr> </thead> <tbody> {% for mardi in mardis %} {% if mardi.date > start %} <tr> <td>{{mardi.nom}}</td> <td>{{mardi.prenom}}</td> <td>{{mardi.niveau}}</td> </tr> {% endif %} {% endfor %} </tbody> </table> <br> {{ form_start(form) }} <button method="post" type='submit' name='clicked' value="mardi" class='waves-effect waves-light btn-small' style='background: #00cf67' label='mardi'>Inscription</button> {{ form_end(form) }} </div> </div>
Partager