设置默认实体值

时间:2013-11-29 16:29:37

标签: symfony symfony-forms symfony-2.3

我正在尝试将实体表单类型设置为具有默认值,即当前登录的用户。

我的代码如下:

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

这似乎不会影响表单,只会列出没有默认选择的用户。

我接近这个吗?

由于

1 个答案:

答案 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开发中很有用,因此它只会模糊代码。

祝你的项目好运,我希望它会对你有所帮助。