Sonata用户捆绑包覆盖EditableRolesBuilder

时间:2014-12-10 11:21:26

标签: symfony override sonata-admin sonata

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

  • 我尝试制作相同的层次结构 Application \ Sonata \ UserBundle \ Security \ EditableRolesBuilder里面 扩展了一个Sonata \ UserBundle \ Security \ EditableRolesBuilder 来自供应商,但没有成功。
  • 我尝试覆盖服务 Sonata \ UserBundle \ Resources \ config \ admin.xml,传递我的自定义类 但我找不到任何地方如何覆盖整个服务。这项服务 是没有参数但硬编码类,我不能传递它 config.yml

1 个答案:

答案 0 :(得分: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