IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Message flash et données non rafraîchies après soumission d'un formulaire [4.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Message flash et données non rafraîchies après soumission d'un formulaire
    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.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    J'ai résolu 1 problème sur 2 : en plaçant mon div modal en début de template, le message flash de succès s'affiche maintenant correctement après la soumission du formulaire.

    Reste maintenant à comprendre pourquoi les données qui ont été correctement mises à jour via l'utilisation dudit formulaire ne sont pas rafraîchies dans ma vue. En effet, dans celle-ci, j'ai

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
    {% set profileAddress = advert.owner.user.profile.address.street %}
    ...
                    <div class="row">
                      <div class="col-md-10">
                        {{ form_row ( vehicleForm.situation.useProfileAddess, { 'id':'use_profil_address', 'label': "Use my profile address (" ~ profileAddress ~ ")" } ) }}
                      </div>
                      <div class="col">
                        <a href="#" data-focus=true data-backdrop="static" data-keyboard="false" data-toggle="modal" data-target="#profileAddress">Edit</a>
                      </div> 
                    </div>
    ...

    Le formulaire met bien à jour les données de l'adresse en base de données mais celles-ci ne sont pas rafraîchies dans la vue au rechargement de la page, après la soumission du formulaire.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Résolu par

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    {% set profileAddress = advert.owner.user.profile.address %}

    et

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ form_row ( vehicleForm.situation.useProfileAddess, { 'id':'use_profil_address', 'label': "Use my profile address (" ~ profileAddress.street ~ ")" } ) }}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2014] Données du cube non rafraîchies après traitement
    Par jeanclaude.ragon dans le forum SSAS
    Réponses: 0
    Dernier message: 18/05/2017, 23h13
  2. Collections d'objet non rafraîchie après une suppression
    Par bernidupont dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/09/2016, 16h02
  3. [Drupal] Afficher les données des champs après soumission
    Par anchain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 18/02/2013, 17h30
  4. données non visibles après mise à jour (MYSQL)
    Par dida.ratsimba dans le forum W4 Express
    Réponses: 3
    Dernier message: 02/12/2008, 09h18
  5. Réponses: 3
    Dernier message: 09/04/2007, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo