Bonjour,
J'aurais besoin de votre aide afin d'alléger mon code sous Symfony.
Je m'explique : J'ai un formulaire de recherche où je veux rechercher un employé par plusieurs critères ( qui sont des entités ).
Exemple du formulaire : Un select avec la fonction de l'employé, un select avec le service de l'employé, un secteur etc..
Je voudrais qu'il sois possible dans ce formulaire, de selectionner parfois qu'une valeur ( les employés qui ont cette fonction précise mais dans tous les services ).
Fonction, Service et Secteur sont des entités. Elles sont reliés à l'entité Employé par leur id ( employé contient id_fonction, id_service & id_secteur ).
Mon formulaire est dans une vue twig en HTML, avec des checkbox et des select. Les données sont récupérées en Json et renvoyés au controller.
Actuellement je fais comme ça dans mon controlleur :
Alors oui ça marche, mais c'est 'gros' et 'moche' non ?
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
22
23
24
25
26
27
28
29
30 if($request->isXmlHttpRequest()) { // Je récupère mes données des select/ checkbox $fonction = $request->request->get('fonction'); $service= $request->request->get('service'); $secteur= $request->request->get('secteur'); // Ici interviennent mes multiples conditions ... if ($fonction !='' AND $service !='' AND $secteur !='' ) { // J'appel mon repository avec la requête qui contient les paramètres fonction ET service ET secteur } // Puis je fais ça pour toutes les options possibles if ($fonction !='' AND $service !='' ) if ( $service !='' AND $secteur !='' ) // etc... $query = $qb->getQuery(); $arrayJson = $query->getResult(); // Et ensuite je les mets dans mon tableau JSON foreach ($arrayJson as $key => $value) { $arrayJson= array( 'nom' => $value->getNom(), 'prenom' => $value->getPrenom()); $arrayJson[]= array($arrayJson); } return new Response(json_encode($arrayJson));
Du coup j'ai trop de conditions, et aussi trop de requêtes dans mes repository pour chaque option..
Avez vous une méthode plus 'propre' pour faire ce que je souhaite ?
Je vous remercie
Partager