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 に答える