Bonjour à tous.
Dans un formulaire, j'utilise (entre autre) un champ EntityType.
Je récupère mes données ordonnées par ordre alphabétiques via l'option 'query_builder' et je veux les séparer en deux groupes.
L'option 'group_by' fait ça à la perfection, mais...
Je souhaiterais pouvoir choisir quel groupe apparaît en premier dans ma liste. Par défaut le premier groupe est celui contenant le premier résultat de la requête, et donc ils ne sont pas affichés dans le même ordre selon mes données.
Actuellement par exemple j'ai à l'affichage dans ma list box :
Et je voudrais que le groupe 1 soit le premier à s'afficher, même si la première donnée de ma requête est A (tri alphabétique) et qu'elle fait partie du groupe 2.Groupe 2
A
D
Groupe 1
B
C
J'ai cru tenir un moment une solution avec l'option 'preferred_choices' mais ça n'a manifestement pas d'effet sur les titres des groupes.
Du coup je patauge :/
Voici mon code pour plus de clarté :
tabRelevantLabels continent une liste de catégorie pertinentes pour un cas précis et je voudrais que le groupe qui les contient soit visible en premier dans tous les cas.
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 ->add('categories', EntityType::class, array( 'class' => 'AppBundle:CCategorie', 'label' => 'Catégories', 'translation_domain' => false, 'choice_label' => 'name', 'choice_translation_domain' => false, 'multiple' => true, 'required' => false, 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('cc') ->orderBy('cc.name', 'ASC') ; }, 'group_by' => function($val, $key, $index) use ($tabRelevantLabels) { if (in_array($val->getName(), $tabRelevantLabels)) { return 'Catégories les plus pertinentes'; } else { return 'Autres catégories'; } }, ))
Quelqu'un a t-il une solution ?
Merci de votre lecture![]()
Partager