PHP beginner |
|
Thanx. Met het vullen van de dropdownlisten bedoel ik het laden van de opties aan de hand van het user id. Dat user id wordt beschikbaar gesteld door de membershipprovider FOS UserBundle.
$userid = $this->getUser()->getId();
$userid = $this->getUser()->getId();
Niet iedere gebruiker heeft dezelfde opties tot zijn/haar beschikking.
Het probleem waar ik nu tegenaan loop is dat het $this object niet in het FormType beschikbaar is, waardoor ik het user id en de daarbij horende opties niet kan ophalen: src/Martijn/CmsBundle/Form/TopicType.php
$builder->add('groups', null, array(
"label" => "Groep",
"constraints" => array(new NotBlank()),
"required" => true,
'class' => 'MartijnCmsBundle:Group',
'property' => 'name',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('g')
->innerJoin('g.users', 'u')
//->where('u.id=:userid')
//->setParameter('userid', $this->getUser()->getId())
->orderBy('g.name', 'ASC');
}
));
$builder->add('groups', null, array( "label" => "Groep", "constraints" => array(new NotBlank ()), "required" => true, 'class' => 'MartijnCmsBundle:Group', 'property' => 'name', 'query_builder' => function(EntityRepository $er) { return $er->createQueryBuilder('g') ->innerJoin('g.users', 'u') //->where('u.id=:userid') //->setParameter('userid', $this->getUser()->getId()) ->orderBy('g.name', 'ASC'); } ));
De where clausule kan niet worden uitgevoerd, doordat het $this object en daardoor het user id niet beschikbaar is. In de code is dit daarom uitgecomment. Ik heb het wel bijgevoegd, omdat ik denk dat dit het probleem verduidelijkt. |