我有一个" 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 :(得分: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
这个想法可以让你做你想做的事情