0

我试图覆盖安全文件夹中的 EditableRolesBuilder。

  • 我尝试在 Application\Sonata\UserBundle\Security\EditableRolesBuilder 中创建相同的层次结构,它从供应商处扩展了基本的 Sonata\UserBundle\Security\EditableRolesBuilder 但没有成功。
  • 我尝试覆盖 Sonata\UserBundle\Resources\config\admin.xml 中的服务,以传递我的自定义类,但我无法找到任何地方如何覆盖整个服务。该服务没有参数但硬编码类,我无法通过它在 config.yml
4

1 回答 1

0

在 Sonata 管理员中,如果您希望覆盖安全角色处理程序,您必须覆盖 2 个服务

  • sonata.user.editable_role_builder
  • sonata.user.form.type.security_roles

定义如下所示

    <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>

参考见Sonata Admin Override Security Roles Handler

于 2014-12-10T12:25:30.310 回答