捆绑配置:默认情况下填充阵列节点

时间:2019-01-24 23:42:40

标签: php symfony

我想为我的捆绑包做一些默认配置。我希望用户能够定义:

apis:
    my-awesome-api:
        base_path: /foo
        title: Awesome API

所有其他信息自动填充。另一个要求是在用户未定义任何默认配置的情况下具有默认配置。

这是我尝试过的:

->arrayNode('apis')
    ->isRequired()
    ->requiresAtLeastOneElement()
    ->arrayPrototype()
        ->children()
            ->arrayNode('paths')->prototype('scalar')->end()->defaultValue([])->end()
            ->booleanNode('enable_doc')->defaultTrue()->end()
            ->scalarNode('doc_factory')->defaultNull()->end()
            ->scalarNode('base_path')->defaultValue('/')->end()
            ->scalarNode('title')->defaultNull()->end()
            ->scalarNode('description')->defaultNull()->end()
            ->scalarNode('version')->defaultValue('1.0.0')->end()
        ->end()
    ->end()
->end()

此代码实际上默认情况下填充配置,但仅当值不为null或为空时。我希望所有键都“存在”。有可能吗?

目前,默认配置如下:

apis:
    main:
        base_path: /   # because default value is not empty or null
        version: 1.0.0 # because default value is not empty or null
        title: main    # because of main key

您会注意到,它几乎还没有完成。

1 个答案:

答案 0 :(得分:0)

您可以在构建配置树时使用addDefaultsIfNotSet()功能。有关更多详细信息,请单击此处:
https://symfony.com/doc/current/components/config/definition.html#default-and-required-values