php - 在 bundle Extension 中获取 Symfony2 环境

标签 php symfony

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

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

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

我找到的大多数获取当前环境的示例都是在 Controller 内访问(例如:$this->get('kernel')->getEnvironment()),但是 Controller 在扩展中不可能基于访问。

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

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

最佳答案

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

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');
}
...

希望这对您有所帮助!

关于php - 在 bundle Extension 中获取 Symfony2 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563769/

相关文章:

php - codeigniter 无法在实时页面上工作,在服务器上找不到错误

php - 如何检查字符串是否是已知值之一?

php - Symfony VichUploaderBundle : File name could not be generated

php - 如何在 Symfony 中为 example.com/username 创建路由并保留所有旧 URL

php - 如何从 Symfony Process Component 使用 sudo 命令?

symfony - 如何识别用户是否被假冒为Symfony2?

php - 如何在 yii2 中创建自定义确认框

php - 如何调试变量未发布到 MYSQL 数据库

php - 将数组值输入数据库

symfony - 在symfony 2.7中找不到'templating.helper.router'服务