合并symfony2中的配置文件

时间:2013-12-30 09:28:35

标签: symfony merge configuration-files

我使用ConfigurationInterface为我的包构建配置。我的扩展文件如下所示:

public function load(array $configs, ContainerBuilder $container) {
    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);
    $container->setParameter('my_admin_included_bundles', $config['included_bundles_namespace']);
    $container->setParameter('my_admin_widget_script_file', $config['widget_script_file']);
    $container->setParameter('my_admin_widgets', $config['widgets']);
    $container->setParameter('my_admin_menu', $config['menu']); 
}

public function getAlias() {
    return 'my_admin';
}

我通过将我的配置参数放入(全局)app / config.yml来测试它,并且它可以工作。但我想将这些参数放入自定义文件,如MyBundle \ Resources \ Config \ my_config.yml,并将此文件与global合并。任何sugestions?

2 个答案:

答案 0 :(得分:0)

app/config/config.yml文件中,您可以导入其他配置文件(即使使用其他格式):

# app/config/config.yml
import:
    - { resource: path/to/my_config.yml }

但是,如果使用prepended configuration,它会更好(它会使您的捆绑包更具可重用性)。有了它,您可以为其他捆绑包的配置设置默认值。这样,用户仍然可以在需要时覆盖它。

答案 1 :(得分:0)

行。我找到了问题的临时解决方案。看起来像这样

use Symfony\Component\Yaml\Parser;    

public function load(array $configs, ContainerBuilder $container) {       
            $yaml = new Parser();
            $configs = $yaml->parse(file_get_contents(__DIR__ . '/../Resources/config/config.yml'));

            $configuration = new Configuration();
            $config = $this->processConfiguration($configuration, $configs);
            $container->setParameter('my_cms_widget_script_file', $config['widget_script_file']);
            $container->setParameter('my_cms_layout_list', $config['layout_list']);
            $container->setParameter('my_cms_default_layout', $config['default_layout']);
            $container->setParameter('my_cms_widgets', $config['widgets']);
            $container->setParameter('my_cms_menu', $config['menu']);
        }

我将自定义config.yml,解析文件解析为数组,然后将其作为参数添加到容器中。任何sugestions?