繁体   English   中英

Symfony2 Sonata Admin 仅将属性显示为只读文本

[英]Symfony2 Sonata Admin show attribute only as a readyonly text

我的实体上有一些不可变的属性可以使用 sonata-admin 包进行管理。

我想在实体的编辑视图中显示它们,但不想提供任何更改它的机制(例如,值不应在输入字段内)

除了这个我找不到任何东西:

$formMapper
    ->add('post', 'entity', 
        array(
            'label' => 'Some post', 
            'attr' => array(
                'readonly' => true,
                'disabled' => true
            ),
            'class' => 'Acme\DemoBundle\Entity\Post'
        )
    )
;

我用read_onlyreadonlydisabled等尝试了所有的东西。 看起来不错,它现在位于下拉列表中(因为它是一个实体),我无法修改它。

但我什至不想那样。 我真的需要它作为文本(当前文本)。

如果您使用具有可软删除、可时间戳的 DoctrineExtensions,这尤其令人讨厌,因为每次“保存”也会保存表单数据。

将类型更改为“文本”而不是“实体”会用输入字段替换下拉列表。那么,这里最好的方法是什么?

$formMapper
    ->add('post', 'entity', 
        array(
            'label' => 'Some post',
            'read_only' => true,
            'disabled'  => true,
            'class' => 'Acme\DemoBundle\Entity\Post'
        )
    )
;

这个答案讲述了如何自定义列表渲染。 也许相同的方法适用于表单渲染?

如果没有,则可以根据创建自定义字段类型文档和自定义模板来创建自定义表单类型。

这有点旧,但这可能会对某人有所帮助。

这是解决您的问题的代码。

$formMapper
->add('post', 'entity', array('label' => 'Some post','attr' => array(
                    'readonly' => 'readonly',
                    'disabled' => 'disabled',
                ),
                'class' => 'Acme\DemoBundle\Entity\Post')
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM