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 : 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 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
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() ));