删除Symfony TreeBuilder上的父节点


Removing parent node on Symfony TreeBuilder

我有这个yml配置文件:

services:
  myservice1: ~
  myservice2: ~

My TreeBuilder is:

$rootNode
    ->children()
        ->arrayNode('services')
            ->useAttributeAsKey('serviceName')
            ->prototype('array')
                ->children()
                ->end()
            ->end()
        ->end()
    ->end()
;

但是如果可能的话,我希望使用下面的yml:

  - myservice1: ~
  - myservice2: ~

最后,我可以使用下面的树生成器

$rootNode = $this->treebuilder->root('DefaultConfigurationRules');
    $rootNode
        ->isRequired()
        ->cannotBeEmpty()
        ->prototype('array')
            ->children()
                //

这是不可能的,在Symfony2中没有意义,而且是一个可怕的反模式。"services"根节点由DPI组件处理,在它下面,DPI组件期望服务定义。所有根配置节点都由注册的配置处理程序专门处理,如服务、参数、安全、框架…在某种程度上,它就像一个编程语言语句。如果没有这样的名称空间,就会与其他配置参数发生冲突。您应该将所有配置参数包装在与bundle名称对应的具有适当命名空间的名称下。