Symfony2:如何在扩展的 load() 方法中访问服务?

Mat*_*lde 2 doctrine dependency-injection symfony

是否可以在捆绑扩展中获得学说服务?

我可以访问容器,但无法获得学说服务。

...
class UltroExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container){
        $dm = $container->get('doctrine_mongodb');
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:服务定义“doctrine_mongodb”不存在。

Nic*_*ich 6

容器尚未构建/编译 - 这就是为什么您只能将ContainerBuiler对象传递给该load()方法。

您无法从构建器获取服务对象,因为此时它不包含服务,而仅包含服务定义

改用编译器传递。更多信息可以在文档一章编译容器中找到

也许您的问题也可以使用服务工厂来解决。