Bonjour,

J'ai réussi à faire fonctionner la fonction Autocomplete de Jquery UI via AJAX interrogeant ma base de données, mais avec un temps de réponse catastrophique (3 secondes sous Symfony2 versus 20ms avec PHP sans Symfony2).
Ai-je fais des erreurs dans mon raisonnement ?
Voici ma logique : une route insérée dans la partie URL d'AJAX via la contrôleur accède au repository adéquate et retourne un objet Réponse (en JSON).

De plus, voici ce que j'ai développé :
1) Le script dans la vue Twig :
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
 
<script>   
    $('#men_commandesbundle_commandetype_nature').autocomplete({
		source : function(requete, reponse){
			var motcle = $('#men_commandesbundle_commandetype_nature').val();
			var DATA = 'motcle=' + motcle;
			$.ajax({
				type:"POST",
				url : "{{ path('mencommandes_ajaxnature') }}",
				dataType : 'json',
				data : DATA, 
 
				success : function(donnee){
					reponse($.map(donnee, function(objet){
	                    return objet; 
	                }));
	            }
			});
		}
	});
    </script>
b) La route :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
mencommandes_ajaxnature:
    pattern: /ajaxnature
    defaults: { _controller: menCommandesBundle:Commandes:ajaxnature}
    requirements:
        _method: POST
c) L'action AjaxNature dans le contrôleur :
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
 
public function ajaxnatureAction()
	{
		$request = $this -> get('request');
 
		if($request->isXmlHttpRequest())
		{
			$term = $request->request->get('motcle');
 
			$array= $this->getDoctrine()
				->getEntityManager()
				->getRepository('menCommandesBundle:commande')
				->listeNature($term);
 
			$response = new Response(json_encode($array));
 
			$response -> headers -> set('Content-Type', 'application/json');
			return $response;
		}
	}
d) La fonction ListeNature dans le repository :
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
 
public function listeNature ($term)
	{
		$qb = $this->createQueryBuilder('c');
 
		$qb ->select('c.nature')
			->where('c.nature LIKE :term')
			->setParameter('term', '%'.$term.'%');
 
		$arrayAss= $qb->getQuery()
                   ->getArrayResult();
 
		// Transformer le tableau associatif en un tableau standard
		$array = array();
		foreach($arrayAss as $data)
		{
			$array[] = $data['nature'];
		}
 
		return $array;
Si quelqu'un a une idée pour le temps de réponse catastrophique, merci par avance.
Je précise que depuis, j'ai externalisé dans un fichier Javascript la partie correspondante dans la vue Twig, mais sans aucun changement sur les performances.

Spiffou92.