2013-08-05 17 views
13

Bir yapılandırma dosyasında (config.yml) basit bir değer listesi eklemek istiyorum. Örneğin:Symfony2 yapılandırmasında değerler içeren bir dizi nasıl eklenir?

my_bundle: 
    columns: ["col1", "col2"] 

yapılandırma ayrıştırıcı düğüm ekleyerek, sadece başarısız: ben eksik

InvalidConfigurationException: Unrecognized options "0, 1" under "my_bundle.columns" 

:

İşte
$rootNode = $treeBuilder->root('my_bundle'); 
$rootNode->arrayNode('columns')->children()->end(); 

hatadır? Bu mümkün mü? Eğer böyle bir düğüm elde etmek istiyorsanız

cevap

36

, sadece yapın:

$rootNode 
    ->children() 
     ->arrayNode('columns') 
      ->prototype('scalar') 
      ->end() 
     ->end() 
    ->end() 
; 
+0

Neredeyse. Prototip yönteminden başka bir soru buldum. Benim durumumda, prototip 'skaler' tutmak zorunda ve işe yaradı. –

+0

Ben 'var_dump ($ config) bu kodu kullanarak, daha sonra ulaşmak için çalışıyoruz anlamıyorum;' = 'Dizi ( [sütunlar] => Array ( [0] => col1 [1 ] => col2 ) ) ' – Touki

+1

Ayrıca -> prototip ('skaler')' sonra başka bir '-> son()' olmalıdır? – liviucmg

0

Sana yaml bir işaretleme dili olmadığını eksik düşünüyorum, onda da değil hatta bir langauge gibi (Bu bir veri serileştirme standardıdır, yani diziler gibi herhangi bir dil yapısını bilmez. Gruplama ve veri bitleri arasındaki ilişkiyi ifade etmek için ana "araç", beyaz boşluk, iki nokta üst üste ve çizgilerdir. symfony documentation page of the YaML format itibaren
:

A YAML dosyası nadiren basit sayıl tanımlamak için kullanılır: Ben bu bölümden toplamak üzere

my_bundle: 
    columns: 
     - col1 
     - col2 

. Çoğu zaman bir koleksiyon açıklar. Bir koleksiyon, bir dizi veya elementlerin bir eşlemesi olabilir. Hem diziler hem de eşlemeler PHP dizilerine dönüştürülür.

- PHP

- Perl

- Python

önceki YAML dosyası aşağıdaki PHP kod eşdeğerdir:

Diziler ardından bir boşluk tire

array('PHP', 'Perl', 'Python'); 
+1

'[" PHP "," Perl "," Python "]', YAML'deki gösteriminize eşdeğerdir. Ve sorduğum şey Touki'nin cevap vermesiyle gerçekten mümkün. Tek yapmanız gereken, dizinin hangi türdeki verileri içerdiğini belirtmektir. Benim durumumda/skaler. –

+0

@ i.am.michiel: Bu durumda soruyu yanlış yorumluyor. Ben ['col1', 'col2'] '' nin çalışmadığını, açık bir şekilde türü ayarlamayı denediniz mi? '- !! str col1'? –

+0

Sorun değil. Ve ayrıştırma problemi YAML tarafında değil, Symfony tarafındaydı.Tek yapmam gereken, Loki'nin cevabında belirtildiği gibi YAML ayrıştırıcısında bir dönüşüm seçeneği eklemekti. –