【发布时间】:2015-07-15 22:44:01
【问题描述】:
我有一个正在使用 FormBuilder 构建的表单:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('rosters', 'entity', array(
'class' => 'ReliefAppsPlatformBundle:Roster',
'property' => 'display',
'query_builder' => function(RosterRepository $r) use ($user) {
return $r->createQueryBuilder('r')
->leftJoin('r.members', 'm')
->addSelect('m')
->where('(m.rights = :adminRight or m.rights = :managerRight) and m.user = :user')
->setParameter('adminRight', RosterMember::ADMIN_LEVEL)
->setParameter('managerRight', RosterMember::MANAGER_LEVEL)
->setParameter('user', $user);
},
'required' => true,
'expanded' => true,
'multiple' => true
))
->add('save', 'submit')
;
}
如您所见,我的 QueryBuilder 使用 $user(当前用户)作为参数。 我的控制器看起来像这样:
public function createAction(Request $request, Event $event)
{
$alert = new RosterEvent;
$alert->setEvent($event);
$user = $this->getUser();
$form = $this->createForm(new RosterEventType(), $alert, $user);
$form->handleRequest($request);
if ($form->isValid()) { ....
我的问题是我需要将 $user 传递给 formbiulder。但我得到“可捕获的致命错误:传递给 Symfony\Bundle\FrameworkBundle\Controller\Controller::createForm() 的参数 3 必须是数组类型,给定对象,...” 我知道问题是我如何将 $user 从控制器传递到表单生成器。但我不知道该怎么做。 有什么想法吗?
【问题讨论】:
-
尝试传递用户的id如下:
$user->getId() -
试试
->setParameter('user', $user->getId()); -
谢谢@Matteo;我试过了,但我得到了可捕获的致命错误:传递给 Symfony\Bundle\FrameworkBundle\Controller\Controller::createForm() 的参数必须是数组类型,给定整数,
标签: symfony query-builder