2014-05-18 3 views
2

Можно ли получить службу доктрины внутри расширения пакета?Symfony2: Как получить доступ к службе внутри метода load() расширения?

Я могу получить доступ к контейнеру, но не могу получить службу доктрины.

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

Я получаю эту ошибку: определение службы «doctrine_mongodb» не существует.

ответ

4

Контейнер еще не построен/скомпилирован - вот почему вы получаете только объект ContainerBuiler, переданный методу load().

вы не можете получить объект-сервис от застройщика, поскольку он не держит услуги, а только служебные определения в этом пункте.

Использовать вместо compiler pass. Более подробную информацию можно найти в главе документации Compiling the container.

Возможно, ваша проблема может быть решена с помощью service factory.

Смежные вопросы