Bonjour,
Voici mon problème :
Sur la page UtilisateurBundle:Tableau:index.html.twig : Au clic sur un lien 'profil', j'affiche un pop-up avec comme contenu les informations de l'utilisateur, qui se trouve dans {{ path("profil") }} (UtilisateurBundle:Profil:index.html.twig) -> ça fonctionne
Ensuite, au clic sur le bouton 'modifier', j'affiche (toujours sur le même pop-up), le formulaire de modification, qui se trouve dans {{ path("profil_modifier") }} (UtilisateurBundle:Profil:index.html.twig -> même contenu que le profil mais avec le form ), avec dans les champs les données de l'utilisateur -> ça fonctionne
A l'enregistrement du formulaire, j'appelle le controller Profil (voir plus bas).
Au submit du formulaire, je voudrais enregistrer les informations et afficher le contenu {{ path("profil") }} (les info de l'utilisateur), toujours sur le pop-up -> ça ne fonctionne pas
Pour l'instant, les données ne s'enregistrent pas et je retourne sur la page UtilisateurBundle:Tableau:index.html.twig, pop-up fermé.
De mon avis personnel, je pense que c'est un problème de méthode (GET/POST). Mais je n'en suis pas sûre.
J'espère avoir été claire sur mon problème et j'espère vraiment que quelqu'un puisse m'aider ;)
Merci d'avance !
#Pop-up
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 <div class='modal'> <div class='modal-dialog'> <div class='modal-content'> <div class='modal-header'> <div class="row"> <div class="col-sm-offset-11"> <button class='btn btn-default' data-dismiss='modal'>Fermer la fenêtre</button> </div> </div> </div> <div class='modal-body'> </div> </div> </div> </div>
#Script JS
#Code du 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 $('.profil').click(function (e) { e.preventDefault(); $.ajax({ type: 'GET', url: '{{ path("profil") }}', success: function(data) { $('.modal') .modal('show') .addClass('modal-profil'); $('.modal-body') .empty() .append(data); $('.modifier').click(function (e) { e.preventDefault(); $.ajax({ type: 'GET', url: '{{ path("profil_modifier") }}', success: function(data) { $('.modal') .modal('show') .addClass('modal-profil'); $('.modal-body') .empty() .append(data); } }); }); } }); });
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 $em = $this->getDoctrine()->getManager(); /* Récupère le formulaire */ $form = $this->createForm(new ProfilType()); $request = $this->getRequest(); /* Valeur par défaut du champ nom */ $form->get('nom')->setData($this->getUser()->getNom()); /* Plus de champs[...] */ /* Si le formulaire a été envoyé */ if($request->getMethod() == 'POST') { $form->bind($request); /* Vérifie si le formulaire est valide */ if($form->isValid()) { /* Récupère les données du formulaire */ $data = $this->getRequest()->request->get('profil'); if($data['nom'] != $this->getUser()->getNom()) { $this->getUser()->setNom($data['nom']); } /* Plus de données du form récupérées[...] */ $em->persist($this->getUser()); $em->flush(); /* Redirection vers le pop-up Profil */ return $this->render('UtilisateurBundle:Profil:index.html.twig', array( 'utilisateur' => $this->getUser() )); } } return $this->render('UtilisateurBundle:Profil:index.html.twig', array( 'utilisateur' => $this->getUser() , 'form' => $form->createView() ));
Partager