在 symfony2 中合并配置文件



我使用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,并将此文件与全局文件合并。有什么建议吗?

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

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

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

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

use SymfonyComponentYamlParser;    
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,将文件解析为数组,然后作为参数添加到容器中。有什么建议吗?

最新更新