CollectionType 元素缺少数据

CollectionType elements missing data

我已经使用 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(); 方法没有 return 实体。

你应该使用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);
});