繁体   English   中英

Symfony 3 SonataAdmin在表单编辑中以只读方式显示“ Sonata_type_collection”字段

[英]Symfony 3 SonataAdmin show a “Sonata_type_collection” field a readonly in Form edit

我有一个“ 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',
    ));

它以某种方式起作用,无法编辑属性(提交表单时会显示错误消息),但至少可以在视图中编辑按钮“添加”和复选框“删除”以及下拉菜单。

有没有办法做到这一点 ?

您可以在options数组中使用btn_add = false来隐藏按钮

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

但我可能会尝试使用细枝检入前端,检查用户是否具有特定角色{% 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

这个想法可能会让你做自己想做的

暂无
暂无

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

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