Bonjour,
J'utilise un formulaire en modal afin de mettre à jour une adresse. Tout fonctionne correctement hormis le fait que le message flash n'est pas affiché ni les données de la vue mises à jour après la soumission du formulaire et donc le rechargement de la page. Pour que le message apparaisse et que les données soient mises à jour, il faut que je rafraîchisse manuellement la page.
Voici l'appel du formulaire modal dans ma vue :
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 ... {{ include('_flashMessages.html.twig') }} ... <a href="#profileAddress" data-toggle="modal" data-target="#profileAddress">Edit</a> ... <div id="profileAddress" tabindex="-1" class="modal fade" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Profile address</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> {{ render(controller('App\\Controller\\user\\ProfileController::editAddress', { 'advert': advert.id, 'request': app.request })) }} </div> </div> </div> </div> ...
Voici la fonction appelée pour rendre le formulaire :
Et enfin, voici l'action que j'ai liée à mon formulaire afin de rediriger vers la vue initiale :
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 /** * @Route("/user/profile/show/{id}", name="user.profile.show") * * @return Response */ public function show(User $user): Response { $profile = $user->getProfile(); return $this->render('user/profile/show.html.twig', array( 'profile' => $profile, 'bodyId' => 'profileShow' ) ) ; } /** * @Route("/user/profile/address/edit/{advert}", name="user.profile.address.edit") * * @param Profile $profile * @param Advert $advert * @param EntityManagerInterface $manager * @param EntityManagerInterface $manager * * @return Response */ public function editAddress(Advert $advert, EntityManagerInterface $manager, Request $request): Response { $profile = $this->getUser()->getProfile(); $form = $this->createForm(ProfileAddressType::class, $profile); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $manager->persist($profile); $manager->flush(); $this->addFlash('success', "Your profile address was successfully updated"); } return $this->render('user/profile/profileAddress.html.twig', array( 'bodyId' => 'profileUpdate', 'advert' => $advert, 'form' => $form->createView() ) ) ; }
Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {{ form_start(form, { 'action': absolute_url(path('advert.vehicle.create', { 'id': advert.id })), 'attr': { 'id': 'profileAddressForm' } }) }} ...
Quelqu'un aurait une idée de la cause du non affichage du message flash et de la non mise à jour des données de l'adresse dans la vue initiale?
Merci d'avance pour votre aide.
Partager