如何访问窗体的buildForm方法内的实体

Ang*_*gel 35 forms entity get symfony

我试图让实体进入自己的形式.我懒得记得一个getData()方法,但它在表单中不存在,我不记得如何使用它.

有没有办法让buildform方法中的实体不使用事件监听器?

我的意思是,像这样:

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

Ang*_*gel 70

我找到了:

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

  • 请注意,如果您使用的是集合类型,则需要使用表单事件$ builder-> addEventListener(FormEvents :: PRE_SET_DATA,function(FormEvent $ event)use($ builder){/**@var YourEntity $ data*/$ data = $ event-> getData();}); (31认同)
  • @nvvetal 你的评论让我很开心:) 谢谢。如果您想修改事件内部的构建器,请执行“$form = $event->getForm()”而不是“$form->add” (3认同)