2010-10-16 12 views
6

Bazı configration verisi app.yml var ve onları harekete geçirmek istiyorum. Bunu sfConfig :: get ('app_datas') tarafından alın, ancak başarısız olur. ayrıntılarda göstermek Sağlar:YAML'den Symfony'deki eylem dizisi nasıl alınır ve kullanılır?

YAML:

all: 
    datas: 
    foo: bar 
    foo2: bar2 

ve

Bu kodu kullanmak deneyin actions.class.php içinde:

foreach (sfConfig::get('app_datas') as $key => $value) { 

    echo "key $key has value $value"; 

} 

o sfConfig :: doesnt iş olsun, çünkü (' app_datas ') NULL, ne kadar simli olsun?

cevap

9

Symfony, app.yml yapılandırma dosyalarını yüklediğinde, yalnızca 2. düzeyi aşağıya kaydeder. Yani doğrudan app_datas'a erişemezsiniz. Daha sonra tuşları olarak foo ve foo2 içeren bir dizidir olacak sfConfig::get('app_datas_baz') yapabilirsiniz

all: 
    datas: 
    baz: 
     foo: bar 
     foo2: bar2 

: Eğer foo ve foo2 içeren bir dizi almak istiyorsanız, böyle bir YAML dosyası olun.

Düzenle On: kuba'nın yolu bir kukladan daha iyidir; Bunu yapabileceğini unuttun.

15

İlk seviyeye bir dizi olarak erişmek istiyorsanız, aynı şekilde @jeremy'nin önerdiği gibi kukla seviyesini tanıtabilirsiniz. Şimdi

all: 
    .baz: 
    datas: 
     foo: bar 
     foo2: bar2 

sizinle verilerinize erişmek mümkün olmalıdır: gitmek

foreach (sfConfig::get('app_datas') as $key => $value) 
{ 
    echo "key $key has value $value"; 
} 
+0

şekilde bir nokta ile Önek bunu sen aslında değişken adları konfigürasyon dosyasında görünmesini istemiyorsanız , kuba - günümü zor bir son tarihte kurtardı! – Timm

+2

Küçük düzeltme: İkinci satırdaki (.baz) noktalı değerin, diğer satırlarla aynı şekilde bir kolon son eki olmalıdır. (Bir düzenleme yapacağım). – halfer