2010-10-16 9 views
6

Ive कुछ configration डेटा app.yml में मिला है, और मैं उन्हें कार्रवाई में foreach करना चाहता हूँ। मैं इसे sfConfig :: get ('app_datas') प्राप्त करके इसे करने का प्रयास करता हूं लेकिन यह विफल रहता है। उन्हें विवरण में दिखने की सुविधा देता है:सिम्फनी में YAML से कार्रवाई करने के लिए एसोसिएटिव सरणी कैसे प्राप्त करें और उपयोग करें?

YAML:

all: 
    datas: 
    foo: bar 
    foo2: bar2 

और actions.class.php मैं इस कोड का उपयोग करने की कोशिश में:

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

    echo "key $key has value $value"; 

} 

यह does not काम क्योंकि sfConfig :: प्राप्त (' app_datas ') पूर्ण है, इसे कैसे प्राप्त करें?

उत्तर

9

जब सिम्फनी app.yml कॉन्फ़िगरेशन फ़ाइलों को लोड करता है, तो यह केवल दूसरे स्तर को नीचे संग्रहीत करता है। तो आप सीधे app_datas तक नहीं पहुंच सकते हैं। इसके बाद आप sfConfig::get('app_datas_baz') जो foo और foo2 कुंजी के रूप में युक्त एक सरणी हो जाएगा कर सकते हैं

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

: आप foo और foo2 युक्त एक सरणी प्राप्त करना चाहते हैं, की तरह एक YAML फ़ाइल बनाते हैं।

संपादित करें पर: क्यूबा का तरीका एक डमी से बेहतर है; भूल गया कि आप ऐसा कर सकते हैं।

15

यदि आप पहले स्तर को सरणी के रूप में एक्सेस करना चाहते हैं तो आप डमी स्तर को बीच में पेश कर सकते हैं, जैसे @ जेरेमी ने सुझाव दिया।

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

अब आप के साथ अपने डेटा का उपयोग करने में सक्षम होना चाहिए:

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

रास्ता तय करना एक डॉट साथ उपसर्ग यह आप यह वास्तव में चर नाम कॉन्फ़िगरेशन में प्रकट करने के लिए नहीं करना चाहते हैं , क्यूबा - मेरे दिन को एक कठिन समय सीमा पर बचाया! – Timm

+2

मामूली सुधार: दूसरी पंक्ति (.baz) पर बिंदीदार मान को कोलन प्रत्यय होना चाहिए, जो अन्य पंक्तियों के समान है। (मैं एक संपादन कर दूंगा)। – halfer

संबंधित मुद्दे