Bonsoir à tous.
Voilà, je vous expose mon problème.
J'ai un site multi-utilisateurs.
Chaque utilisateur peut créer X Clubs.
Ensuite chaque utilisateur peut créer X Plannings, en sachant qu'un planning est rattaché à un club.
Donc dans mon formulaire d'ajout de planning, j'ajoute un champ Club.
Juqu'ici, tout roule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // class PlanningType extends AbstractType $builder->add('club', 'entity', array( 'class' => 'Sf\\DashBundle\\Entity\\Club', 'property' => 'nom', ));
Par contre je ne trouve pas la méthode pour limiter l'affichage de la liste des clubs à celle que l'utilisateur connecté possède (Entité User avec fonction getClubs())
J'ai essayé plusieurs méthodes :
J'envois mon User comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // class PlanningsController extends Controller $user = $this->get('security.context')->getToken()->getUser(); $form = $this->createForm(new PlanningType(), $planning , array( 'empty_data' => $user ));Le User récupéré est bien mon utilisateur connecté, mais impossible de filtrer par utilisateur, il me dit que $user n'est pas définit (il ne doit pas passer dans la fonction je pense) : "Notice: Undefined variable: user". Pour info si le modifie $user->getId() par l'Id de mon utilisateur, ça fonctionne très bien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // class PlanningType extends AbstractType // Je récupère mon utilisateur (ca fonctionne, j'ai vérifié) $user = $options['empty_data']; $builder->add('club', 'entity', array( 'class' => 'Sf\\DashBundle\\Entity\\Club', 'property' => 'nom', 'query_builder' => function(EntityRepository $er) { return $er->createQueryBuilder('c') ->where('c.user = :user') ->setParameter('user' , $user->getId()); } ));
J'ai donc essayé de surcharger la fonction avec EntityRepository + User, ça ne fonctionne malheureusement pas... Il faudrait juste faire passer l'user dans cette fichue fonction de filtre !
Je ne sais pas si c'est suffisament clair ! lol
Si vous avez déjà résolu ce problème, ou même d'une autre façon, je vous écoute avec grande attention !
Merci beaucoup,
Alexandre
Partager