Сервисы загрузки на основе других пакетов, Symfony2 DI

0

В моем классе Extension я хочу загрузить некоторые службы только в том случае, если установлен какой-либо другой пакет. однако, поскольку ContainerBuilder переданный методу загрузки, является временным пустым, я не могу использовать такие методы, как $container->hasExtension("foo_bar") как я могу это достичь?

Теги:
dependency-injection

1 ответ

1
Лучший ответ

Все пакеты находятся в параметре kernel.bundles. Используйте это, чтобы проверить, доступен ли он. Например:

public function load(ContainerBuilder $container, array $configs)
{
    $bundles = $container->getParameter('kernel.bundles');
    if (isset($bundles['AcmeDemoBundle'])) {
        // ...
    }

    /* or
    if (in_array('Acme\DemoBundle\AcmeDemoBundle', $bundles)) {
        // ...
    }
    */
}

Если вы хотите настроить другие службы пакета или вам нужно прочитать все другие службы, вы захотите использовать Compiler Pass.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню