Конфигурация пакета: узел массива заполнен по умолчанию - PullRequest
0 голосов
/ 25 января 2019

Я хотел бы сделать некоторые настройки по умолчанию для своего пакета.Я хочу, чтобы пользователь мог определить:

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()

Этот код фактически заполняет конфигурацию по умолчанию, но только врегистр значений не нулевой или пустой.Я бы хотел, чтобы все ключи были «существующими».Возможно ли это?

На данный момент конфигурация по умолчанию выглядит следующим образом:

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 голосов
/ 25 января 2019

Вы можете использовать функцию addDefaultsIfNotSet() при построении дерева конфигурации. Для более подробной информации вы можете проверить здесь:
https://symfony.com/doc/current/components/config/definition.html#default-and-required-values

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...