【问题标题】:Write configuration to config.yml将配置写入 config.yml
【发布时间】:2017-03-07 02:21:53
【问题描述】:

我有一个类似这样定义的服务

puff_service:
    driver: mysql 

我知道如何加载配置,但在这种情况下,我想在人们第一次安装捆绑包时自动将此配置写入 config.yml。有没有办法做到这一点。

【问题讨论】:

    标签: symfony


    【解决方案1】:

    您需要使用bundle extension 增强您的捆绑包,可以在其中指定默认值,而无需强制最终用户将它们写入config.yml

    class Configuration implements ConfigurationInterface
    {
        public function getConfigTreeBuilder()
        {
            $treeBuilder = new TreeBuilder();
            $rootNode = $treeBuilder->root('puff_service');
    
            $rootNode
                ->children()
                    ->scalarNode('driver')
                        ->default('mysql')
                    ->end()
                ->end()
            ;
    
            return $treeBuilder;
        }
    }
    

    这样,包含您的捆绑包的人将拥有默认驱动程序 mysql;如果需要更改,他们可以直接在config.yml中指定

    【讨论】:

    • 非常感谢您的评论。正如我所提到的,我知道如何加载配置(并设置默认值),并且我知道用户可以在 config.yml 中手动输入条目。我想要的是在用户安装捆绑包时在 config.yml 中自动添加这些条目,以便用户无需阅读文档即可查看默认设置。就像安装 Symfony 时一样,您会看到 config.yml 中已经填充了一些配置。
    • @nicholasnet 这是通过包含所有默认值的 .yml.dist 文件完成的。
    • @Veve 据我所知,这是针对参数而不是针对配置。我知道,也没有自动编辑任何 .dist 文件的方法。
    • @nicholasnet 如果您查看任何捆绑包,您会在 README.MD 中看到一个条目,其中贡献者向您解释要插入配置文件的参数:据我所知,那里这不是自动的方法(而且,对我来说,完全没用:RTFM :P)
    • @DonCallisto 我曾经认为它没用,但现在没那么多了。想象一下,你安装 Symfony 并在安装框架后手动添加 config.yml 中提到的每一个配置,并告诉用户 RTFM ..... 不酷。现在我同意不是每个捆绑包都需要这个功能,但它对某些人来说肯定很方便。反正就是这样。
    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多