Bonjour,
Dans un formulaire, via de l'Ajax, je cherche à mettre à jour une liste de départements en fonction du pays choisi, lui aussi dans une liste.
Voici mon champs dans le formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $builder->add('pays','entity', array('class'=>'Hotels\GestionAnnoncesBundle\Entity\Pays', 'attr'=>array('onblur'=>'departementsByPays(this.value)')));
Voici mon Javascript dans mon template :
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 function departementsByPays(idPays) { var DATA = "idPays="+idPays; $.ajax ({ type: "POST", url: "{{ path('province_departementsByPays') }}", data: DATA, success: function(res) { alert(res); } }); return (false); }
Voici ma route :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 province_departementsByPays: pattern: /departementsByPays defaults: { _controller: "HotelsGestionAnnoncesBundle:Province:departementsByPays" } requirements: { _method: post }
Voici la fonction dans le 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 public function departementsByPaysAction() { $request = $this->container->get('request'); if($request->isXmlHttpRequest()) { $idPays = $request->request->get('idPays'); $em = $this->container->get('doctrine')->getEntityManager(); $pays = $em->getRepository('HotelsGestionAnnoncesBundle:Pays')->find($idPays); $departements = $pays->getDepartements(); return new \Symfony\Component\HttpFoundation\Response('2'); } }
Je ne vois pas maintenant comment affecter les départements récupérés dans le controller à la liste liée au champ de mon formulaire. Autrement dit, je cherche à savoir quelle doit être la bonne réponse dans mon controller en lieu et place de
et la bonne affectation dans mon Javascript en lieu et place de
Code : Sélectionner tout - Visualiser dans une fenêtre à part return new \Symfony\Component\HttpFoundation\Response('2');
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part alert(res);
Je vous remercie d'avance de toute aide apportée.
Partager