php - 禁用 SonataUserBundle sonata.user.admin.group 服务

标签 php symfony dependency-injection fosuserbundle sonata-admin

我正在使用 SonataAdminBundle 和 SonataUserBundle。

SonataUserBundle 注册了一个服务 sonata.user.admin.group,SonataAdminBundle 会自动检测该服务,以在管理仪表板中设置链接以对 CRUD 操作进行分组。

如何禁用 sonata.user.admin.group?我一直在遵循 Symfony2 文档中的食谱:

到目前为止,我的包定义中有以下代码来添加编译器传递:

public function build(ContainerBuilder $container)
{
  parent::build($container);

  $container->addCompilerPass(new CompilerPass());
}

这是编译过程:

<?php

namespace NS\Service\CompilerPass;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class CompilerPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
       $container->removeDefinition('sonata.user.admin.group');
    }
}

我认为这应该可行,但不行。 Symfony 抛出异常告诉我 sonata.user.admin.group 服务不存在。但它存在,如果我执行 $container->getDefinition('sonata.user.admin.group') 实际定义返回。

谢谢

最佳答案

尝试将服务标记为抽象并将其 public 属性设置为 false,例如

#in any services.yml
services:
    sonata.user.admin.group:
      abstract: true
      public: false
    #...

完整性补充:

并添加到 CompilerPass:

$container->getDefinition('sonata.user.admin.group')->setSynthetic(true);

关于php - 禁用 SonataUserBundle sonata.user.admin.group 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976700/

相关文章:

php - 如何在 laravel 中跟踪购物车表的 sessionID

php - 使用外键在表中添加数据

symfony - 使用 EntityType 显示选择时,无法从 Symfony 表单保存实体

php - 我的自定义工厂类中的 OutOfBoundsException

symfony - JMS 翻译包@Ignore

dependency-injection - Laravel 4 : Facade vs DI (when to use)

java - 无法在 Spring bean 中进行 self 注入(inject)?

PHP 无法连接到 MS SQL Express 2008

java - Spring在条件类的子类中注入(inject)bean

javascript - 第二个相关下拉列表未填充数据