在我的Extension
类中,我只想在安装了其他一些软件包的情况下加载某些服务。
但是由于传递给load方法的ContainerBuilder
是一个临时的空方法,我不能使用$container->hasExtension("foo_bar")
等方法来实现这个目标吗?
答案 0 :(得分: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)) {
// ...
}
*/
}
如果您想要调整其他捆绑服务,或者您需要阅读所有其他服务,那么您将要使用编译器通行证。