Symfony2配置中的嵌套原型

时间:2012-12-14 08:08:18

标签: symfony configuration yaml

使用Symfony2 TreeBuilder,可以为阵列节点内的每个节点配置原型,例如:支持像

这样的配置
foo:
    xxx: { foo: bar}
    yyy: { foo: bar}

如果有任何数量的xxx,yyy等(任何值)节点使用类似

的结构
$rootNode
    ->arrayNode('foo')
    ->prototype('array')
        ->children()
            ->scalarNode('foo')

我想创建另一个级别的同一个东西,而不在其间引入另一个命名节点,例如支持像

这样的配置
foo:
    xxx:
        aaa: { foo: bar}
        bbb: { foo: bar}
    yyy:
        ccc: { foo: bar}
        ddd: { foo: bar}

其中可以有任意数量的xxx,yyy等节点,每个节点可以包含任意数量的其他aaa,bbb等节点。

有没有办法实现这个目标?直接在另一个原型调用的->prototype()下调用->children()不起作用,因为原型似乎不支持嵌套原型。因此,我不得不为xxx和yyy硬编码特定的值,限制了我正在写的包的灵活性。

1 个答案:

答案 0 :(得分:12)

在symfony 2.2中检查,嵌套工作。

请勿在嵌套->children()

之间使用->prototype()
$rootNode->children()
   ->arrayNode('foo')
      ->prototype('array')
         ->prototype('array')
             ->children()
                ->scalarNode('foo');