Bonjour,
Je rencontre un petit problème lorsque j'affecte l'index 'choices' d'un type de formulaire entity :
Cas nominal :
Problème :
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 //... // initialisation du tableau de propriétés $serverformarray = array( 'class' => 'CS\PomAdminBundle\Entity\Server', 'property' => 'name', 'required' => false, 'label' => 'Serveur de calcul', 'expanded' => false, 'multiple' => false ); // initialisation préalable ( très en amont ) de la liste de choix $serverChoicesInstances = $options['customOptions']['serverinstances']; // Affectation pour la liste; $serverformarray["choices"] = $serverChoicesInstances; // construction de la liste $builder->add('server', 'entity', $serverformarray); //...
La liste préalable est parfois vide ( nombre d'items = 0 ), cela a du sens fonctionellement.
Dans ce cas, le formulaire est alors (et bien malgré moi ) automatiquement remplie avec tous les enregistrements en base (ce qui n'est pas voulu ! ).
Je ne trouve pas de moyen simple d'empêcher cela.
J'ai utilisé une solution de contournement absolument pas satisfaisante à terme en utilisant le ("query_bulder") avec une requete dont je suis sure qu'elle ne me ramene rien ( et donc un acces base inutile ) .
Quelqu'un peut-t'il me suggérer quelque chose de mieux?
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 //... // vérifier le nombre d'items ramenés if (count($serverChoicesInstances)>0){ $serverformarray["choices"] = $serverChoicesInstances; $serverformarray["empty_value"] = "Choisir un serveur de calcul"; }else { // requete qui ne ramene rien de maniere certaine $serverformarray["query_builder"]= function(ServerDAO $er) { return $er->createQueryBuilder('srv')->where('srv.id=-1') ->orderBy('srv.name', 'ASC'); }; $serverformarray["empty_value"] ="Il n'y a aucun server de calcul dans la base"; } //...
Merci
Partager