gpt4 book ai didi

php - Symfony 表单 - 在 CollectionType 中的子条目类型中访问实体

转载 作者:IT王子 更新时间:2023-10-28 23:49:42 25 4
gpt4 key购买 nike

我正在尝试访问 FormBuilder 内父级 CollectionType 中给定嵌入表单的实体:

父类型

Class ParentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('children', CollectionType::class, array(
'entry_type' => ChildType::class
);
}
}

子类型

class ChildType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$child = $builder->getData(); // this returns null
}

public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Vendor\Bundle\Entity\Child',
);
}
}

虽然这在正常形式下有效,但 $child 被返回为 null。如何访问 ChildType 中的 Child 实体?

最佳答案

答案在于使用事件监听器,它监听PRE_SET_DATA 事件。

它将向您的闭包传递一个 FormEvent 类,其中包含表单和绑定(bind)到它的数据。

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($builder)
{
$form = $event->getForm();
$child = $event->getData();

if ($child instanceof Child) {

// Do what ever you like with $child entity data

}
}
);
}

关于php - Symfony 表单 - 在 CollectionType 中的子条目类型中访问实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com