Symfony Sonata Admin 仅将属性显示为只读文本
Posted
技术标签:
【中文标题】Symfony Sonata Admin 仅将属性显示为只读文本【英文标题】:Symfony2 Sonata Admin show attribute only as a readyonly text 【发布时间】:2013-09-20 07:55:53 【问题描述】:我的实体上有一些不可变的属性可以使用 sonata-admin bundle 进行管理。
我想在实体的编辑视图中显示它们,但不想提供任何更改它的机制(例如,值不应在输入字段内)
除了这个我什么都找不到:
$formMapper
->add('post', 'entity',
array(
'label' => 'Some post',
'attr' => array(
'readonly' => true,
'disabled' => true
),
'class' => 'Acme\DemoBundle\Entity\Post'
)
)
;
我用read_only
、readonly
、disabled
等所有的东西都试过了。看起来不错,它现在在一个下拉列表中(因为它是一个实体),我无法修改它。
但我什至不想要那个。我真的需要它作为文本(当前的)。
如果你使用带有可软删除、可时间戳的 DoctrineExtensions,这尤其令人讨厌,因为每次“保存”都会保存表单数据。
将类型更改为“文本”而不是“实体”会用输入字段替换下拉列表。那么,这里最好的方法是什么?
【问题讨论】:
【参考方案1】:$formMapper
->add('post', 'entity',
array(
'label' => 'Some post',
'read_only' => true,
'disabled' => true,
'class' => 'Acme\DemoBundle\Entity\Post'
)
)
;
【讨论】:
【参考方案2】:answer 告诉如何自定义列表呈现。也许同样的方法也适用于表单渲染?
如果没有,那么您可以根据create custom field type documentation创建您的自定义表单类型,并自定义模板。
【讨论】:
自定义列表渲染看起来不错,但是编辑模式呢?我无法为编辑和新的渲染类型添加模板...【参考方案3】:这有点旧,但这可能会对某人有所帮助。
这是解决您的问题的代码。
$formMapper
->add('post', 'entity', array('label' => 'Some post','attr' => array(
'readonly' => 'readonly',
'disabled' => 'disabled',
),
'class' => 'Acme\DemoBundle\Entity\Post')
)
【讨论】:
以上是关于Symfony Sonata Admin 仅将属性显示为只读文本的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 3 Sonata Admin 使用注释创建管理员
Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类
Symfony - Sonata Abstract Admin 和 getDoctrine
Symfony 3 上的 Sonata Admin 实体翻译