如何在奏鸣曲编辑表单中显示字段值?
Posted
技术标签:
【中文标题】如何在奏鸣曲编辑表单中显示字段值?【英文标题】:How to show field value in sonata edit form? 【发布时间】:2020-12-17 03:29:31 【问题描述】:有编辑表格。一个字段不应该是可编辑的。我试图设置选项 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])
;
目前我收到错误:
类型错误:Qms\ClaimComponent\Status\ManagedModel\StatusManaged::getProject()的返回值必须实现接口Qms\CoreComponent\Domain\Project\ManagedModel\ProjectManagedInterface,返回null
这是因为如果我禁用了字段,则字段值设置为 null。
一种方法是重写edit.html.twig,现在使用奏鸣曲默认模板。但是我没有找到快速的方法,如果我覆盖,样式就会关闭。一个字段看起来有点太多了。
【问题讨论】:
您可以为实体中的该字段分配一个默认值。 【参考方案1】:如果您在提交时不介意该字段的值,可以通过设置取消映射
'mapped' => false
在它的属性中。
例子:
->add('name', 'text', ['required' => true, 'mapped' => false])
【讨论】:
以上是关于如何在奏鸣曲编辑表单中显示字段值?的主要内容,如果未能解决你的问题,请参考以下文章