フォームでエンティティ選択リストを使用しています。特定のエンティティのみを使用したい (例: ユーザーが所属するグループのみ) そのため、コントローラーでこれらのグループを取得し、それらを に渡そうとしていformBuider
ます。
コントローラ:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
ならどうしよう?formBuilderでどのように使用するのですか? 渡されたグループの配列を使用するようにこの行を変更する方法は?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
または他の方法で:
class MessageType
{
/.../
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group','entity',
array(
'class' => 'Vendor\MyBundle\Entity\Group',
'property' => 'name',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('group');
$qb->add('where', 'group.administrator = :user');
$qb->setParameter('user', $user->getId());
return $qb;
},
'label' => 'Group'
)
)
// Continue adding fields
;
}
/.../
}
フォームビルダーで使用するオブジェクト $user を取得するにはどうすればよいですか? ($user は現在ログインしているユーザーを表します)