Salut,
En travaillant sur mes formulaires, j'ai "bloque" sur un point assez bete en fait.
Lorsque je veux ajouter une Entry, j'ai besoin de le faire dans un contexte. Je m'explique : je peux attacher un User a cette Entry, mais un User qui fait parti du Wrap de la session. Typiquement mon formulaire Entry, lorsqu'il m'affiche la choiceList des User, ne devrait m'afficher que la liste des User qui ont pour wrap_id l'id du Wrap de ma session.
Premiere etape, je passe mon id de wrap a mon EntryType, pour ensuite pouvoir faire new EntryType($wrap_id). Ainsi il a toutes les cartes en main.
Mon probleme : que faire ensuite ? Comment limiter le choix des User a ceux qui ont le bon wrap_id ?
1/ Ajouter une condition dans le entityChoiceList. Du genre (j'ai pas la syntaxe exacte) :
->add('user', 'entity', array('class' => 'AssoUserBundle:User', 'queryBuilder' => '->where("wrap" => $wrap_id)'))
2/ Passer a mon EntryType mon UserManager et faire un
->add('user', 'entity', array('class' => 'AssoUserBundle:User', 'choices' => $UserManager->getForChoiceList($wrap_id)))
3/ Passer a mon EntryType l'objet Wrap entier (pas seulement l'id), et faire un
->add('user', 'entity', array('class' => 'AssoUserBundle:User', 'choices' => $wrap->getUsersForChoiceList()))
4/ Autre ?
Le 1/ m'ennuie car il n'utilise pas tout ce que je peux construire dans ma relation wrap - user (du genre les User pas encore active par exemple, je devrais rajouter a la main is_activated = true). Le 2/ m'ennuie car je devrais passer le UserManager a l'EntryType, ca m'oblige a en faire un service. Le 3/ m'ennuie car ce n'est pas dans Wrap que doit se trouver cette methode, mais dans WrapManager. Cependant, c'est celui qui me plait le plus pour l'instant.
Est-ce que vous avez deja rencontre ce cas ? Quel est votre avis ?
Partager