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">&times;</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 :

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()
                                                                           )
                            )
        ;
 
    }
Et enfin, voici l'action que j'ai liée à mon formulaire afin de rediriger vers la vue initiale :

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.