Symfony 3 SonataAdmin展示了一个" Sonata_type_collection"在表单编辑中只读一个字段

时间:2017-08-16 19:40:14

标签: symfony sonata-admin

我有一个" Sonata_type_collection"只有所有者可以编辑的字段,我希望管理员只能读取此属性(他可以编辑其他属性)。 除了这个,我找不到任何东西:

$formMapper->add('commandeElements', 'sonata_type_collection', array('required'=> true,'by_reference' => false,'attr' => array(
            'readonly' => true,
            'disabled' => true
        )), array(
        'edit' => 'inline',
        'inline' => 'table',
        'sortable' => 'position',
    ));

它以某种方式起作用,不能编辑属性(当提交表单时显示错误消息)但是按钮"添加"和复选框"删除"仍然可以至少在视图中编辑下拉列表。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用选项数组

中的btn_add = false隐藏按钮

https://sonata-project.org/bundles/admin/3-x/doc/reference/form_types.html#sonata-type-collection

但我可能会尝试使用twig检查前端,检查用户是否具有某个角色{% if is_granted('ROLE_ADMIN') %} ... {% endif %}并启用或禁用表单组件。

我可能会......

{% set disabled = !is_granted('ROLE_YOU_WANT_TO_ALLOW') %} // in your case ROLE_OWNER

然后在渲染时尝试类似......

{{ form_row(yourForm.yourCollectionName, {
                    'disabled': disabled
                }) }}

以树枝模板参考

为例

http://symfony.com/doc/current/reference/forms/twig_reference.html#form-variables-reference

这个想法可以让你做你想做的事情