[英]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.