CollectionType 元素缺少数据

问题描述

我已经使用 CollectionType 嵌入了表单:

$builder->add('battlePages',CollectionType::class,[
    'label'          => 'Battle Pages','entry_type'     => BattlePageCollectionType::class,'error_bubbling' => false,'constraints'    => [
        new Valid(),],]);

'battlePages' 是一个包含许多元素的 ArrayCollection。

  public function buildForm(FormBuilderInterface $builder,array $options) {
    /** @var BattlePage $entity */
    $entity = $builder->getData();
    ...

但是 '$entity' 是空的,但是集合正在遍历。

我的目标是在“BattlePageCollectionType”中获取 BattlePage 实体的数据,这是我在示例中的第二个 ($entity)。

有人遇到过类似的问题吗?

解决方法

$builder->getData(); 方法不返回实体。

你应该使用 Form Events

PRE_SET_DATA 事件示例:

$builder->addEventListener(FormEvents::PRE_SET_DATA,function (FormEvent $event) {
      $entity = $event->getData();
      $form   = $event->getForm();

      $form->add('someField',TextType::class);
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...