【问题标题】:SonataUserBundle overriding EditableRolesBuilderSonataUserBundle 覆盖 EditableRolesBuilder
【发布时间】:2015-02-08 13:44:52
【问题描述】:

我正在尝试覆盖 Security 文件夹中的 EditableRolesBuilder。

  • 我尝试在 Application\Sonata\UserBundle\Security\EditableRolesBuilder 其中 扩展了基础 Sonata\UserBundle\Security\EditableRolesBuilder 来自供应商,但没有成功。
  • 我尝试覆盖服务 Sonata\UserBundle\Resources\config\admin.xml,传递我的自定义类 但我找不到任何地方如何覆盖整个服务。这项服务 没有参数但硬编码的类,我不能把它传入 config.yml

【问题讨论】:

  • 这不是一个简单的方法,您必须覆盖 securityRolesType + 转换器才能正常工作

标签: symfony overriding sonata-admin sonata


【解决方案1】:

在 Sonata admin 中,如果您希望覆盖安全角色处理程序,您必须覆盖 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 2012-09-19
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多