每个包的参数.yml,symfony2

时间:2013-07-20 15:12:33

标签: php symfony doctrine

我想知道是否可以为每个捆绑包定义一个parameters.yml文件,或者仅为需要它的捆绑包定义并加载它们。

我搜索了很多,但我找不到这样的解决方案。

2 个答案:

答案 0 :(得分:15)

你应该澄清一下;您希望每个捆绑包自动包含parameters.yml文件吗?我担心你需要修改Symfony的DI核心。但是有一个简单的选择。

如果您使用某些DependencyInjection创建自己的捆绑包,则可以在捆绑包的扩展程序类中添加$loader->load('parameters.yml');

扩展程序类应位于YourBundle/DependencyInjection/YourBundleExtension.php

该课程应如下所示

class YourBundleExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

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

因此,在这种情况下,parameters.yml文件将位于YourBundle/Resources/config/parameters.yml

答案 1 :(得分:3)

如果您只想将捆绑包中的参数文件包含到配置中,只需按照常规格式从捆绑包中导入额外的配置文件(默认应用程序显示如何通过路由执行此操作)。更新您的配置以包含您的参数文件,如下所示:

imports:
    - { resource: parameters.yml }
    - { resource: @YourBundle/Resources/config/parameters.yml }
    - { resource: security.yml }
    - ...

您的参数文件应采用与默认格式相同的格式:

parameters:
    my.parameter: "my value"