Symfony 将配置写入config.yml

Symfony 将配置写入config.yml,symfony,Symfony,我有一个定义类似这样的服务 puff_service: driver: mysql 我知道如何加载配置,但在这种情况下,当人们第一次安装包时,我希望在config.yml中自动编写此配置。无论如何都可以这样做。您需要使用一个可以指定默认值而不强制最终用户在config.yml class Configuration implements ConfigurationInterface { public function getConfigTreeBuilder() {

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

puff_service:
    driver: mysql 

我知道如何加载配置,但在这种情况下,当人们第一次安装包时,我希望在config.yml中自动编写此配置。无论如何都可以这样做。

您需要使用一个可以指定默认值而不强制最终用户在
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

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据我所知,这是针对参数的,而不是针对config的。另外,我知道没有自动编辑任何.dist文件的方法。@nicholasnet如果您查看任何包,您会在README.MD中看到一个条目,其中贡献者向您解释要在配置文件中插入什么参数:据我所知,没有自动编辑的方法(对我来说,这是完全无用的:RTFM:P)@我过去认为它没用,但现在没那么多了。假设您安装了Symfony,并在安装框架后手动添加config.yml中提到的每个配置,然后告诉用户RTFM…不是很酷吧。现在我同意不是每个捆绑包都需要这个功能,但是对于一些人来说它确实很方便。不管怎么说,事情就是这样。非常感谢你的评论。正如我提到的,我知道如何加载配置(并设置默认值),并且我知道用户可以在config.yml中手动输入条目。我想要的是在用户安装包时在config.yml中自动添加这些条目,这样用户就可以在不阅读文档的情况下查看默认设置。就像安装Symfony时一样,您会看到config.yml中已经填充了一些配置。@nicholasnet这是通过一个包含所有默认值的.yml.dist文件完成的。@Veve据我所知,这是针对参数的,而不是针对config的。另外,我知道没有自动编辑任何.dist文件的方法。@nicholasnet如果您查看任何包,您会在README.MD中看到一个条目,其中贡献者向您解释要在配置文件中插入什么参数:据我所知,没有自动编辑的方法(对我来说,这是完全无用的:RTFM:P)@我过去认为它没用,但现在没那么多了。假设您安装了Symfony,并在安装框架后手动添加config.yml中提到的每个配置,然后告诉用户RTFM…不是很酷吧。现在我同意不是每个捆绑包都需要这个功能,但是对于一些人来说它确实很方便。不管怎么说,这就是事实。
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;
    }
}