添加我自己的答案
在Sonata管理中,如果您希望将显示安全角色更改为用户友好的视图,则必须覆盖以下Sonata的服务
-
奏鸣曲用户可编辑角色生成器
-
奏鸣曲用户窗体类型安全角色
定义如下
<services>
<service id="sonata.user.editable_role_builder" class="Acme\DemoBundle\Security\EditableRolesBuilder">
<argument type="service" id="security.context" />
<argument type="service" id="sonata.admin.pool" />
<argument>%security.role_hierarchy.roles%</argument>
</service>
<service id="sonata.user.form.type.security_roles" class="Acme\DemoBundle\Form\Type\SecurityRolesType">
<tag name="form.type" alias="sonata_security_roles" />
<argument type="service" id="sonata.user.editable_role_builder" />
</service>
</services>
并定义这些服务中的类,我使用的演示代码
Acme\DemoBundle
现在
SecurityRolesType
等级取决于奏鸣曲
EditableRolesBuilder
你必须让它独立于你自己
可编辑角色生成器
类,以同样的方式重写sonata的依赖项
RestoreRolesTransformer
到你的班级
我已将所有角色转换为一系列模块化角色
SecurityRolesType.php
并将其传递给查看此文件中可以查看的所有自定义项
还可以覆盖角色的分支模板,您可以通过
form_admin_fields.html.twig
从…起
vendor\sonata-project\user-bundle\Resources\views
并添加
app\Resources\SonataUserBundle\views\Form
路径,它将覆盖父细枝文件,在细枝文件中,我已尝试使用手风琴控制引导程序以模块方式显示角色,并具有适当的权限
注意:此代码仅显示权限
[Create,Edit,View,List,Export,Delete,Master]它不会处理自定义
准许
最后一步在主配置文件中导入服务文件
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @AcmeDemoBundle/Resources/config/admin.xml }
对于完整的代码演示,您可以在下面的存储库中找到它
Sonata Admin Enhanced View For Security Roles
模块权限预览