我试图覆盖安全文件夹中的 EditableRolesBuilder。
- 我尝试在Application\Sonata\UserBundle\Security\EditableRolesBuilder扩展基础一 Sonata\UserBundle\Security\EditableRolesBuilder来自供应商,但没有成功。
- 我尝试覆盖服务Sonata\UserBundle\Resources\config\admin.xml,以传递我的自定义类但是我在任何地方都找不到如何覆盖整个服务的方法。此服务没有参数,但硬编码类,我无法传入配置.yml
在Sonata管理员中,如果您希望覆盖安全角色处理程序,则必须覆盖2个服务
- sonata.user.editable_role_builder
- sonata.user.form.type.security_roles
定义如下所示
<services>
<service id="sonata.user.editable_role_builder" class="AcmeDemoBundleSecurityEditableRolesBuilder">
<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="AcmeDemoBundleFormTypeSecurityRolesType">
<tag name="form.type" alias="sonata_security_roles" />
<argument type="service" id="sonata.user.editable_role_builder" />
</service>
</services>
有关参考,请参阅Sonata Admin Override Security Roles Handler