Partage
  • Partager sur Facebook
  • Partager sur Twitter

symfony listes déroulantes liées

    27 avril 2017 à 16:09:42

    Bonjour,

    J'ai un petit problème au niveau de la liaison entre deux listes déroulantes.

    La selection de la valeur dans la premiere liste fonctionne (id bien récupéré), cependant la seconde n'est pas affecté

    Je pense que c'est le

    if($request->isXmlHttpRequest())

    de mon controleur qui retourne faux (vérifié avec un console.log ($request->isXmlHttpRequest()) qui affiche "bool(false)" ) et qui du coup ne recupère pas les données à afficher, cependant je ne vois pas comment résoudre le problème

    Pour construire la chose, j'ai mon JS ainsi :

    $('#hierarchie_niveau1_id').change(function() {
    	var id_select = $('#hierarchie_niveau1_id').val();
       
    	$.ajax({
    		type: 'POST',
    		url: "remplir_liste2", 
    		data: {'id': id_select},
            
            success: function(data){ 
                $('#hierarchie_niveau2_id').html('');
                console.log(data);
                $.each(data, function(index, value) { 
                	$('#hierarchie_niveau2_id').append('<option value="'+ value.id +'">'+ value.libelle +'</option>');
                });
            }
         });
    	
    });

    Info :le console.log(data) renvoie "NULL"


    Route :

    remplir_liste2:
        pattern: /admin/niveau/remplir_liste2
        defaults: { _controller: AppBundle:Niveau:remplirListe2}
        requirements:
            _method: POST|GET

    Controleur :

    public function remplirListe2Action()
    	{
    		
    		$request = $this->getRequest();
    		$em = $this->getDoctrine()->getEntityManager();
    
    		//condition posant problème : pas d'entrée en boucle
    		if($request->isXmlHttpRequest()) 
    		{
    			$id = '';
    			$id = $request->get('id');
    			if ($id != '')
    			{
    				$SousNiveau = $em->getRepository('AppBundle:Niveau')->findNiveauByPrevious(2,$id);
    				$tabSousNiveau = array();
    				$i = 0;
    				foreach($SousNiveau as $next) 
    				{
    					$tabSousNiveau[$i]['id'] = $next->getId();
    					$tabSousNiveau[$i]['libelle'] = $next->getLibelle();
    					$i++;
    				}
    				$response = new Response();
    				$data = json_encode($tabSousNiveau); 
    				$response->headers->set('Content-Type', 'application/json');
    				$response->setContent($data);
    				return $response;
    			}
    			else {
    				var_dump($id);
    			}
    
    		}
    		else{
                    return new Response('pas d\'AJAX');
                }    
    		return new Response('Erreur');
    	}

    Pour info : je me suis appuyé de ce topic pour créer mon code
    https://openclassrooms.com/forum/sujet/symfony2-listes-deroulante-liees

    -
    Edité par LucasLEL 27 avril 2017 à 16:18:06

    • Partager sur Facebook
    • Partager sur Twitter

    symfony listes déroulantes liées

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown