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.

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',
));
Juqu'ici, tout roule.
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 
));
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());
        }
));
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...

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