将角色分组到一个奏鸣曲形式的复选框中
Group roles into one checkbox in Sonata form
我的 Sonata 面板中有一个表单,用于为组设置角色
我想要具有与复选框相同的角色字段,因此我已将 'expanded' => true
添加到我的字段
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name')
->add('roles', SecurityRolesType::class, [
'expanded' => true,
])
;
}
但我明白了
我正在尝试将这些角色 ROLE_ADMIN_USER_EDIT
、ROLE_ADMIN_USER_LIST
... 分组到 ROLE_ADMIN_USER
我尝试了在这里找到的一些选项:http://symfony.com/doc/current/reference/forms/types/choice.html 但没有任何效果
如何像我的第一个屏幕截图那样使用复选框对这些角色进行分组?
谢谢
为此,您需要覆盖 Sonata base_edit_form_macro
模板并更改默认渲染
{# If field name is `roles` then override classic extended multiple select #}
{% if field_name == 'roles' %}
<div class="form-group">
{# Render form field name #}
<label for="roles_field"
class="col-sm-3 control-label"
>
{{ field_name|capitalize }}
</label>
<div id="roles_field"
class="sonata-ba-field col-sm-9 sonata-ba-field-standard-natural"
>
{# Render each groups role #}
{% for label, choices in form.roles.vars.choices %}
{# Render group role name #}
<label>
<b>{{ label }}</b>
</label>
{# Render each roles of a group #}
{% for key, choice in choices %}
{{ form_widget(form.roles.children[key]) }}
{{ form_label(form.roles.children[key]) }}
{% endfor %}
{% endfor %}
</div>
</div>
{% else %}
{{ form_row(form[field_name])}}
{% endif %}
然后角色表格将显示如下
我的 Sonata 面板中有一个表单,用于为组设置角色
我想要具有与复选框相同的角色字段,因此我已将 'expanded' => true
添加到我的字段
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name')
->add('roles', SecurityRolesType::class, [
'expanded' => true,
])
;
}
但我明白了
我正在尝试将这些角色 ROLE_ADMIN_USER_EDIT
、ROLE_ADMIN_USER_LIST
... 分组到 ROLE_ADMIN_USER
我尝试了在这里找到的一些选项:http://symfony.com/doc/current/reference/forms/types/choice.html 但没有任何效果
如何像我的第一个屏幕截图那样使用复选框对这些角色进行分组?
谢谢
为此,您需要覆盖 Sonata base_edit_form_macro
模板并更改默认渲染
{# If field name is `roles` then override classic extended multiple select #}
{% if field_name == 'roles' %}
<div class="form-group">
{# Render form field name #}
<label for="roles_field"
class="col-sm-3 control-label"
>
{{ field_name|capitalize }}
</label>
<div id="roles_field"
class="sonata-ba-field col-sm-9 sonata-ba-field-standard-natural"
>
{# Render each groups role #}
{% for label, choices in form.roles.vars.choices %}
{# Render group role name #}
<label>
<b>{{ label }}</b>
</label>
{# Render each roles of a group #}
{% for key, choice in choices %}
{{ form_widget(form.roles.children[key]) }}
{{ form_label(form.roles.children[key]) }}
{% endfor %}
{% endfor %}
</div>
</div>
{% else %}
{{ form_row(form[field_name])}}
{% endif %}
然后角色表格将显示如下