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);
});
我已经使用 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);
});