为dev,prod和测试环境加载bundle特定值

HMR*_*HMR 3 symfony

文档提到Symfony/app/config/config_dev.yml了开发环境.

我已经捆绑了特定的配置文件 Symfony/src/mmt/mrBundle/DependencyInjection/mmtmrExtension.php

例如:Symfony/src/mmt/mrBundle/Resources/config/services.yml需要加载mmtmrExtension.phprouting.yml在同一目录中却没有.

是否有我必须遵循的命名惯例?那么我该如何Symfony/src/mmt/mrBundle/Resources/config/services_dev.yml根据环境加载mmtmrExtension.php呢?我见过的唯一例子就是硬编码加载services.yml蚂蚁就是它.

services.yml我有一些代码,如:

mmt.mr.DefaultController:
     class: mmt\mrBundle\Controller\DefaultController
     arguments: [@data_provider]
     calls: 
         - [ "setContainer", [ @service_container ] ]
Run Code Online (Sandbox Code Playgroud)

也许我应该根据环境加载不同的服务?我想要另一个@data_provider用过.

似乎有数百种方法可以做到这一点,但这些方法都没有被文档100%覆盖.我宁愿有一种方法,但有100%的文档覆盖率.

也许有人可以指出配置文件如何工作的正确位置."书"并没有涵盖太多,烹饪书只提到了与"我如何"相关的部分.

感谢您阅读本文,希望您能提供帮助.

Pau*_*eux 6

这必须做到这一点:

    //src/Acme/DemoBundle/DepedencyInjection/AcmeDemoExtension.php

    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    switch ($container->getParameter('kernel.environment')) {
        case 'dev':
            $loader->load('services_dev.yml');
            break;
        case 'prod':
            $loader->load('services_prod.yml');
            break;
        case 'test':
            $loader->load('services_test.yml');
            break;
        default:
            $loader->load('services_dev.yml');
            break;
    }
Run Code Online (Sandbox Code Playgroud)

  • 当然这样的事情会做你需要的一切`$ loader-> load("services _ {$ container-> getParameter('kernel.environment')}.yml");` (2认同)