使用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硬编码特定的值,限制了我正在写的包的灵活性。
答案 0 :(得分:12)
在symfony 2.2中检查,嵌套工作。
请勿在嵌套->children()
:
->prototype()
$rootNode->children()
->arrayNode('foo')
->prototype('array')
->prototype('array')
->children()
->scalarNode('foo');