Как объединить без перезаписи добавленные части конфигурации с помощью Symfony/Config ~2.6

У меня 2+ Symfony\Component\Console\Commandкаждый из которых возвращает часть конфигурации Symfony\Component\Config\Definition\Builder\TreeBuilder:

class ProjectFooCommand extends Command {
public function getConfigTree()
{
    return (new TreeBuilder())
        ->root('project')
            ->children()
                ->arrayNode('foo')
                    ->children()
                        // specific
                    ->end()
                ->end()
            ->end()

    ;
}
}
class ProjectBarCommand extends Command {
public function getConfigTree()
{
    return (new TreeBuilder())
        ->root('project')
            ->children()
                ->arrayNode('bar')
                    ->children()
                        // specific
                    ->end()
                ->end()
            ->end()

    ;
}
}

и они объединены в одну конфигурацию с помощью ArrayNodeDefinition::append():

class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
    $builder = new TreeBuilder();

    $treeBuilder = new TreeBuilder();
    $rootNode = $treeBuilder->root('codio');

    $rootNode
        ->children()
        ->scalarNode('lorem')->defaultValue('ABC')->end()
        ->scalarNode('ipsum')->defaultValue('123')->end()
        ->end()
    ;

    foreach ($this->application->all() as $command)
    {
        $rootNode->append($command->getConfigTree());
    }

    return $treeBuilder;
}
}

все работает, когда в конфигурацию добавляется только одна команда. Когда я пытаюсь добавить секунду, она перезаписывает ранее добавленное. Как это исправить?

Должно быть:

codio:
    lorem: ABC
    ipsum: 123
    project:
        foo:
            ...
        bar:
            ...

Текущий:

codio:
    lorem: ABC
    ipsum: 123
    project:
        bar:
            ...

1 ответ

Вы пробовали cannotBeOverwritten(true) Метод: http://api.symfony.com/2.7/Symfony/Component/Config/Definition/Builder/NodeDefinition.html?

Другие вопросы по тегам