Bonjour,
Encore un petit problème dont je voudrais vous faire part
Dans la classe de mon formulaire, j'ai un champ qui me permet de sélectionner un TypeMedia.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
$builder
    .....
    ->add('type', 'entity', array(
            'class' => 'MyBundle:TypeMedia',
            'property' => 'nom',
            'query_builder' => function(EntityRepository $er) use($lisible) {
                                return $er->createQueryBuilder('dc')
                                ->where("dc.lisible = :lis")
                                ->setParameter('lis', $lisible)
                                ->orderBy('dc.nom', 'ASC');
                            },
        )
Le formulaire est bien rendu, les choix proposés correspondent bien au booléen $lisible que je fournis à la fonction. Par contre, lorsque je soumets le formulaire, lors du bind, tous les champs sont bien acceptés à l'exception de celui-ci. J'ai un peu cherché dans le code et je pense comprendre que dans le bind (plus exactement lorsque la fonction 'getEntitiesByIds' est appelée, la requête ne retourne aucun enregistrement car la variable '$lisible' n'est semble-t-il plus transmise. La clause where se retrouve simplement avec 'where("dc.lisible = :lis")' sans que le paramètre 'lis' soit initialisé. Pour preuve, si je remplace le code ci-dessus par celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
...
return $er->createQueryBuilder('dc')
              ->where("dc.lisible = '1'")       // :lis est à '1' dans l'exemple au-dessus.
              ->orderBy('dc.nom', 'ASC');
je n'ai plus de problème et le formulaire en entier est accepté. Comment procéder pour que la requête lors du bind soit correcte ?
Merci de votre attention.

Cordialement,
Jean-Pierre.