繁体   English   中英

在bundle Extension中获取Symfony2环境

[英]Get Symfony2 environment in bundle Extension

在我的Symfony2包扩展中,我的services.yml正在加载

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');

但是我希望为每个环境加载不同的服务配置(例如:用于测试的不同服务配置)。

我找到的用于获取当前环境的大多数示例都是在控制器内进行访问(例如: $this->get('kernel')->getEnvironment() ),但是在Extensions中无法进行基于Controller的访问。

根据Twig扩展 - symfony2环境 ,环境可以是构造函数注入但是我不确定我的bundle扩展是如何被Symfony注册/实例化的,因此不确定如何注入环境(我通过grep找到的唯一引用是在缓存中文件,这没有太大帮助)。

如何在config中为每个env指定要加载的不同服务YAML文件,或者至少找出环境以便我可以编写Extension类来加载正确的文件?

通常,在加载服务时,您的方法原型应该是

public function load(array $configs, ContainerBuilder $container).

那么你可以访问你的环境做一个

$env = $container->getParameter("kernel.environment")

然后测试$ env以查看您所处的环境类型。

就像是

if ("dev" == $env) {
    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('devServices.yml');
}
...

希望这可以帮助!

echo $this->container->get(‘kernel’)->getEnvironment(); 

在最新版本(2.5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM