Formulaire dynamique avec Ajax dans un pop-up
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:
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:
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:
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() )); |