如何解决无法检索“收集类型”中的额外未映射字段
我具有以下结构:
- 实体“模块”
- 实体“参数”
一个模块可以有很多参数。
我的测试模块有3个参数的集合。
每个参数都没有相同的功能,它可能是文本,整数,选择,因此,我制作了一个FormType来格式化参数。见下文
我的ModuleType(嵌入ParametreModuleTestType的集合)
class ModuleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder->add('parametres',CollectionType::class,[
'label' => false,'entry_type' => ParametreModuleTestType::class,'entry_options' => ['label' => false],]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Module::class
]);
}
}
我的ParametreModuleTestType:
class ParametreModuleTestType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA,function (FormEvent $event) {
$parametre = $event->getData();
$form = $event->getForm();
switch ($parametre->getPropriete()) {
case "tempMax":
$form
->add('valeur',IntegerType::class,[
'label' => false
]);
break;
case "dateRange":
$form
->add('valeur',TextType::class,[
'label' => false
]);
$form
->add('valeurformatted',HiddenType::class,[ //Extra field here,only in specific item parameter
'label' => false,'mapped' => false
]);
break;
}
});
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Parametre::class,'allow_extra_fields' => true,]);
}
}
在我的控制器中,提交表单后:
$form = $this->createForm(ModuleType::class,$module);
$form->handleRequest($request);
dd($form['valeurformatted']);
我遇到以下错误:
“ valeurformatted”子项不存在。
当然,我的视图包含此隐藏的额外字段。
我想我无法使用经典语法“ $form['fieldname']
”访问此数据,因为它已在收集中,但是有解决方案吗?除了在提交的深层数组中嵌套循环之外?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。