SonataUserBundle 覆盖 EditableRolesBuilder
Posted
技术标签:
【中文标题】SonataUserBundle 覆盖 EditableRolesBuilder【英文标题】:SonataUserBundle overriding 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 + 转换器才能正常工作 【参考方案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
【讨论】:
以上是关于SonataUserBundle 覆盖 EditableRolesBuilder的主要内容,如果未能解决你的问题,请参考以下文章
自 Symfony2 更新到 2.8 以来覆盖注册表单(SonataUserBundle)
Symfony2 / SonataUserBundle - 注册后自动登录
Sonata Admin Bundle + Sonata User Bundle:覆盖登录表单