无法检索“收集类型”中的额外未映射字段

问题描述

我具有以下结构:

  • 实体“模块”
  • 实体“参数”

一个模块可以有很多参数

我的测试模块有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 (将#修改为@)