如何在奏鸣曲编辑表单中显示字段值?
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])
有编辑表格。一个字段不应是可编辑的。我试图设置选项 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])