如何在表单的buildForm方法中访问实体

40

我想获取表单内部的实体。我记得有一个名为getData()的方法,但它并不存在于表单内部,而且我也不记得如何使用它。

有没有办法在buildform方法中获取实体,而不使用事件监听器?

我的意思是像这样:

 public function buildForm(FormBuilderInterface $builder, array $options)
   {
        /*some method to get the entity of the form such as getEntity????????*/
        $builder->add('field');
   }

1个回答

85

我找到了它:

public function buildForm(FormBuilderInterface $builder, array $options)
   {
        $entity = $builder->getData();
        $builder->add('field');
   }

43
请注意,如果您正在使用集合类型,您需要使用表单事件。$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder) {/** @var YourEntity $data */ $data = $event->getData();}); - nvvetal
3
@nvvetal你的评论让我的一天充满了阳光:)谢谢。如果您想在事件中修改构建器,请执行$form = $event->getForm(),然后执行$form->add - Piotrek Zatorski
谢谢!我已经花了一个小时在寻找解决方案……Symfony文档并不总是完整的 :) - David Vander Elst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接