2012-12-14 19 views
7

Symfony2 TreeBuilder ile, bir dizinin içindeki her düğümün prototiplerini yapılandırmak mümkündür, ör. Herhangi bir xxx yyy sayısı ve böylece (hiç bir değer) vardırİç içe prototipler Symfony2 Yapılandırma

foo: 
    xxx: { foo: bar} 
    yyy: { foo: bar} 

gibi bir şekili desteklemek üzere

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

gibi bir yapı ile düğümlerin I'in bir seviye yaratmak istiyoruz aralarında başka bir adlandırılmış düğüm kullanılmadan aynı şey, örn. Diğer aaa herhangi bir sayıda, bbb vb düğümleri içerebilir, her biri xxx yyy ve böylece düğümler üzerinde herhangi bir sayıda olabilir burada

foo: 
    xxx: 
     aaa: { foo: bar} 
     bbb: { foo: bar} 
    yyy: 
     ccc: { foo: bar} 
     ddd: { foo: bar} 

gibi bir şekili desteklemek üzere.

Bunu başarmanın bir yolu var mı? Prototipler, iç içe geçmiş prototipleri desteklemediğinden, başka bir prototip aramasının ->children() kodunun hemen altında ->prototype() numaralı çağrı çalışmıyor. Sonuç olarak, yazdığım paketin esnekliğini sınırlayarak xxx ve yyy için sabit kodlara özel değerler veriyorum.

cevap

11

Symfony 2.2'de denetleniyor, yuvalama işleri.

iç içe ->prototype() arasında ->children() kullanmayın:

$rootNode->children() 
    ->arrayNode('foo') 
     ->prototype('array') 
     ->prototype('array') 
      ->children() 
       ->scalarNode('foo'); 
+0

biliyor musunuz durumda çocukları kullanmayın zorunludur neden? Bu konuda da tökezledi ve bu durumda çocukları kullanmak tutarlı görünüyordu. – k0pernikus

+0

@ k0pernikus Sanırım, prototip herhangi bir öğe sayısı anlamına geliyor. –