我正在尝试将实体表单类型设置为具有默认值,即当前登录的用户。
我的代码如下:
EventType.php
->add('forUser', 'entity', array(
'label' => 'Staff',
'class' => 'BMUserBundle:User'
'property' => 'fullName',
'empty_value' => 'Select Staff'.
'query_builder' => function(EntityRepository $er) {
return $er->findAllStaff();
}
))
这样可以正常工作,并在下拉列表中返回所有工作人员。
我也尝试过以下操作:
$form = $this->createForm(new EventType());
$form->get('forUser')->setData("USER_ENTITY") -> entity of logged in user
这似乎不会影响表单,只会列出没有默认选择的用户。
我接近这个吗?
由于
答案 0 :(得分:0)
当您在控制器中实例化实体类型时,首先必须创建一个Event对象,其中用户设置为“forUser”关系。然后你只需要传递你的Event对象作为第二个参数,它将自动填充类型。
这是一个小代码示例,向您展示如何操作:
/src/Your/AppBundle/Controller/YourController.php
// get the authenticated user
$user = $this->get('security.context')->getToken()->getUser();
$event = new Event();
$event->setForUser($user);
$form = $this->createForm(new EventType(), $event);
但正如forgettenbas所说,你必须验证你的EventType是否具有data_class选项,并将Event Classname作为值。您将获得有关它的更多信息here。
如果你让我告诉你一个关于主题的建议,你不应该使用Event作为ClassName,因为事件概念在Symfony2开发中很有用,因此它只会模糊代码。
祝你的项目好运,我希望它会对你有所帮助。