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