如何在奏鸣曲编辑表单中显示字段值?

How to show field value in sonata edit form?

有编辑表格。一个字段不应是可编辑的。我试图设置选项 disabled=true, attr => ['readonly' => true],它们使它不可编辑,但是当提交表单时,它被提交,将 null 设置为该字段然后我在获取时出错该字段值,因为它不能为空。

所以我想让那个字段甚至不作为字段存在,而是在编辑表单中显示它的值。有办法吗?或者,如果您知道如何在提交带有禁用字段的表单时消除错误,那也可以。

 public function configureFormFields(FormMapper $form)
    {
        if ($this->subject->getId() === null) {
            $form
                ->add('name', 'text', ['required' => true])
                ->add('codeMod', 'text', ['required' => true])
                ->add('position', 'text', ['required' => false])
                ->add('projectMod', EntityType::class, ['class' => ProjectEntity::class])
                ->add('active', 'checkbox', ['required' => false])
                ->add('first', 'checkbox', ['required' => false])
                ->add('last', 'checkbox', ['required' => false])
                ->add('denialReasons', 'text', ['required' => false])
            ;
        } else {
            $form
                ->add('name', 'text', ['required' => true])
                ->add('position', 'text', ['required' => false])
//                ->add('project', TextType::class, ['label' => 'form.label_project_mod', 'attr' => [/*'readonly' => true,*/ 'disabled' => true]])
                ->add('project', EntityType::class,
                    ['label' => 'form.label_project_mod', 'class' => ProjectEntity::class, 'attr' => ['readonly' => true, 'disabled' => true],
//                        'template' => 'ClaimClaimBundle:ClaimStatusAdmin:show_project.html.twig'
                    ]
                )
//                ->add('projectMod', TextType::class, ['label' => 'form.label_project_mod', 'attr' => [/*'readonly' => true,*/ 'disabled' => true]])
                ->add('active', 'checkbox', ['required' => false])
                ->add('first', 'checkbox', ['required' => false])
                ->add('last', 'checkbox', ['required' => false])
                ->add('denialReasons', 'text', ['required' => false])
            ;
        }
    }

目前我收到错误:

类型错误:Return Qms\ClaimComponent\Status\ManagedModel\StatusManaged::getProject() 的值必须实现接口 Qms\CoreComponent\Domain\Project\ManagedModel\ProjectManagedInterface,返回空

这是因为如果我禁用了字段,字段值将设置为空。

一种方法可以重写edit.html.twig,现在使用奏鸣曲默认模板。但是我没有找到快速的方法,如果我重写,样式就会关闭。一个字段看起来有点太多了。

如果您在提交时不介意该字段的值,您可以通过设置

取消映射

'mapped' => false

在其属性中。

示例:

->add('name', 'text', ['required' => true, 'mapped' => false])