8

使用 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 的特定值,从而限制了我正在编写的包的灵活性。

4

1 回答 1

13

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

不要->children()在嵌套之间使用->prototype()

$rootNode->children()
   ->arrayNode('foo')
      ->prototype('array')
         ->prototype('array')
             ->children()
                ->scalarNode('foo');
于 2013-03-26T14:43:24.557 回答