Symmphony2 et Ajax

monphp Messages postés 2 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 4 août 2013 - 4 août 2013 à 16:56
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 5 août 2013 à 12:58
Bonjour tous le monde,
Il y a un bout de temps que j'essaye de d'introduire ajax dans mon projet.
Mon problème est le suivant:
j'ai deux select une va être remplit d'après le résultat de l'autre on change (fournisseur -> produits).
Le code que j'ai réalisé est comme suit:

routing.yml
remplir_select_produit:
    pattern:  /SelectProduit
    defaults: { _controller: GestionLibrairie:Admin:SelectProduit }
    requirements:
        _method: POST


Commande.html.twig
function SelectProduit(){
    var id_select = $('#selectfournisseur').val();
  $.ajax({
    url: "{{ path('remplir_select_produit')}}",
    type: 'POST',
    data: {'id': id_select},
    dataType: 'json',
    success: function(json){ // quand la réponse de la requete arrive
      $('#selectproduit').html(''); // tu vides le select2
      $.each(json, function(index, value) { // et tu boucle sur la réponse contenu dans la variable passé à la function du success "json"
            alert("aaa");
            $('#selectproduit').append('<option value="'+ value.idDeLoption +'">'+ value.libDeLoption +'</option>');
      });
    }
  });
}


Controller
public function SelectProduitAction()
    {
        $request = $this->getRequest();
        $em = $this->getDoctrine()->getEntityManager();
        if($request->isXmlHttpRequest()) // pour vérifier la présence d'une requete Ajax
        {
            $id = '';
            $id = $request->get('id');
            if ($id != '')
            {
                $repository=$em->getRepository('GestionLibrairieBundle:Fournisseur');
                $t=$repository->find($id);
                $produits=$t->getProduits();
                $tabproduits = array();
                $i = 0;
                foreach($produits as $produit) // pour transformer la réponse à ta requete en tableau qui replira le select2
                {
                    $tabproduits[$i]['idDeLoption'] = $produit->getCodeBar();
                    $tabproduits[$i]['libDeLoption'] = $produit->getLibele();
                    $i++;
                }
                $response = new Response();
                $data = json_encode($tabproduits); // c'est pour formater la réponse de la requete en format que jquery va comprendre
                $response->headers->set('Content-Type', 'application/json');
                $response->setContent($data);
                return $response;
            }
        }
        return new Response('Erreur');
    }

1 réponse

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
5 août 2013 à 12:58
Et qu'elle est donc l'erreur ?
0
Rejoignez-nous