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

时间:2013-09-16 08:22:11

标签: php symfony sonata-admin symfony-sonata

我的实体上有一些不可变的属性来管理sonata-admin包。

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

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

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

我尝试了read_onlyreadonlydisabled等所有内容。它看起来没问题,它现在位于下拉列表中(因为它是一个实体),我无法修改它。

但我甚至不希望如此。我真的需要它作为文本(当前的)。

如果您使用具有softdeletable,timestampable的DoctrineExtensions,尤其令人讨厌,因为每次“保存”都会保存表单数据。

将类型更改为“text”而不是“entity”会使用input-field替换下拉列表。那么,这里最好的方法是什么?

2 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:1)

这个answer讲述了如何自定义列表呈现。也许同样的方法适用于表单渲染?

如果没有,那么您可以根据create custom field type documentation创建自定义表单类型,并自定义模板。