Bonjour a tous,
Je suis sous symfony 4 .
Je me pose des questions sur l'organisation de mon code pour avoir plusieurs actions sur la même page.
Bien sur toutes mes actions ont des routes différentes. new/show/edit , cela ouvre a chaque fois une nouvelle page. Mais lorsque l'on doit avoir plusieurs action dans la même page comment doit on faire.
Par exemple sur la même page je doit creer une cotisation et ensuite je dois pouvoir la modifier.
Je met tout dans une seules fonction de mon controller? J'appelle les méthodes?
sans compter que pour modifier dans la meme page que la création c'est galère car comment recupérer l'id? en temps normal on le récupère avec un path ou on lui attribut l'id mais là?
Je sais c'a fait beaucoup d' interrogations , merci d'avance pour vos reponses.
Voila c'est en fait ces deux méthodes que je voudrai insérer dans ma page ou j'affiche la fiche adherent. J'ai deux form différents pour la création et la modification de ma cotisation car j'ai des différences .
Voici la methode qui me permet d'afficher mon adherent qui est dans un autre 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 class AmountController extends AbstractController { /** * Permet de créer une cotisation * * @Route("/amount/{id}/new" , name="amount_create") * * * @return Response */ public function create(Request $request, ObjectManager $manager, $id) { $repo = $this->getDoctrine()->getRepository(Adherent::class); $adherent = $repo->find($id); $amount = new Amount(); $form = $this->createForm(AmountCreateType::class, $amount); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $amount->setAdherent($adherent); $manager->persist($amount); $manager->flush(); $this->addFlash( 'success', "La cotisation a bien été enregistrée !" ); return $this->redirectToRoute( "adherent_show", [ 'id' => $amount->getAdherent()->getId() ] ); } return $this->render('amount/new.html.twig', [ 'form' => $form->createView() ]); } /** * Permet de modifier une cotisation * * @Route("amount/{id}/modif", name="amount_modif") * * @param Amount $amount * * @return Response */ public function modif(Amount $amount, Request $request, ObjectManager $manager) { $form = $this->createForm(AmountType::class, $amount); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $manager->persist($amount); $manager->flush(); $this->addFlash( 'success', "La cotisation a bien été modifiée !" ); return $this->redirectToRoute( "adherent_show", array( 'id' => $amount->getAdherent()->getId() ) ); } return $this->render('amount/amount_modif.html.twig', [ 'amount' => $amount, 'form' => $form->createView() ]); } }
Comment je fais du coup ?
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 class AdherentController extends AbstractController { /** * Permet d'afficher un adherent * * @Route("/adherent/{id}/show", name="adherent_show") * * * @param AdherentRepository $repo * @param ObjectManager $manager * @return Response */ public function show($id,Request $request, ObjectManager $manager) { $repo = $this->getDoctrine()->getRepository(Adherent::class); $adherent = $repo->find($id); $repo1 = $this->getDoctrine()->getRepository(CategoryAdherent::class); $cat = $repo1->findAll(); return $this->render('adherent/show.html.twig', [ 'adherent' => $adherent, 'cat' => $cat, ]); } }
C'a fait deux jours que j'y suis dessus et je n'y arrive pas , a part copier le code de mes deux methodes dans la methode de ma fiche adherent mais je ne pense pas que se soit propre et en plus je n'arrive pas a modifier ma cotisation car il ne trouve pas l'id de ma cotisation deja créée.
Merci de votre aide.
Partager