我的实体上有一些不可变的属性来管理sonata-admin包。
我想在实体的编辑视图中显示它们,但不想提供任何改变它的机制(例如,值不应在输入字段内)
除了这个我找不到任何东西:
$formMapper
->add('post', 'entity',
array(
'label' => 'Some post',
'attr' => array(
'readonly' => true,
'disabled' => true
),
'class' => 'Acme\DemoBundle\Entity\Post'
)
)
;
我尝试了read_only
,readonly
,disabled
等所有内容。它看起来没问题,它现在位于下拉列表中(因为它是一个实体),我无法修改它。
但我甚至不希望如此。我真的需要它作为文本(当前的)。
如果您使用具有softdeletable,timestampable的DoctrineExtensions,尤其令人讨厌,因为每次“保存”都会保存表单数据。
将类型更改为“text”而不是“entity”会使用input-field替换下拉列表。那么,这里最好的方法是什么?
答案 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创建自定义表单类型,并自定义模板。