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.
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
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'); }, )
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 ?
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');
Merci de votre attention.
Cordialement,
Jean-Pierre.
Partager