删除Symfony TreeBuilder上的父节点

时间:2014-06-12 10:11:42

标签: php symfony yaml

我有这个yml配置文件:

services:
  myservice1: ~
  myservice2: ~

我的TreeBuilder是:

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

但如果可能,我希望使用以下yml:

  - myservice1: ~
  - myservice2: ~

2 个答案:

答案 0 :(得分:1)

最后我能够使用以下Tree Builder

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

答案 1 :(得分:0)

那是不可能的,在Symfony2中没有任何意义,而且是一种可怕的反模式。 "服务"根节点由DPI组件处理,在其下方,DPI组件需要服务定义。所有根配置节点都由注册的配置处理程序专门处理,如服务,参数,安全性,框架......在某种程度上,它类似于编程语言语句。你会遇到其他配置参数与这种命名空间的冲突。您应该将所有配置参数包装在与您的包名称对应的正确名称空间的名称下。