2017-08-16 79 views
1

我有一个只有所有者可以编辑的“Sonata_type_collection”字段,我希望管理员只能读取此属性(他可以编辑其他属性)。 我无法找到任何东西,但这样的:Symfony 3 SonataAdmin在窗体中显示一个只读的“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', 
    )); 

它的工作原理不知何故,属性不能被编辑(当提交表单时显示错误消息),但按钮“添加”,勾选“删除“仍然可以至少在视图中编辑下拉菜单。

有没有办法做到这一点?

回答

0

可以隐藏的选项阵列

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

使用btn_add = false的按钮,但我可能会尝试在树枝前端检查,检查用户是否有一定的作用{% 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

这是一个想法,可以让你做你想做的事

+0

感谢您的回答,您能更具体地说明如何在树枝前端做到这一点吗? – Midoox

+0

我修改了答案 – Enumus

相关问题