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