私は SonataAdminBundle と SonataUserBundle を使用しています。
SonataUserBundle は、SonataAdminBundle によって自動的に検出されるサービスsonata.user.admin.group
を登録して、管理ダッシュボードにリンクを設定し、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')
、実際の定義は return です。
ありがとう