2013-09-06 7 views
11

कृपया, How to expose a Semantic Configuration for a Bundleबंडल के बाहर से सिम्फनी 2 बंडल कॉन्फ़िगरेशन तक कैसे पहुंचे?

वास्तव में से लिंक नहीं है, मैं पहले से ही एक पूरी तरह से काम कर रहे बंडल, कई विन्यास विकल्प के साथ। बंडल वास्तव में अपने स्वयं के खंड पर app/config.yml पर कॉन्फ़िगर किया गया है। मैंने पहले ही एक ट्रिगरबिल्डर के साथ एक कॉन्फ़िगरेशन इंटरफेस लागू किया है, और इसी तरह। और मैं बंडल में कॉन्फ़िगरेशन को सफलतापूर्वक इंजेक्ट करने में सक्षम हूं और इसे बंडल कोड में उपयोग करता हूं।

फिर भी, मुझे क्या करना चाहते हैं अत्यंत सरल है, लेकिन फिर भी मैं एक fully working bundle प्रकाशित किया है और स्थापना योग्य संगीतकार का उपयोग कर, मैं केवल कुछ ही हफ्तों के लिए Symfony 2 के साथ खेल रहा है, और शायद इस सवाल का जवाब वास्तव में हास्यास्पद सरल है ... लेकिन मुझे यह नहीं पता!

मैं अपने ऐप नियंत्रक से बंडल कॉन्फ़िगरेशन तक कैसे पहुंच सकता हूं?

उदाहरण के लिए ... इस app/config.yml पर config जा रहा है (जहां "डिवाइस" है सरणी प्रोटोटाइप):

my_bundle: 
    format: standard 
    devices: 
     main: 
      color: yellow 
      capacity: 200 

मैं किसी एप्लिकेशन बंडल का उपयोग कर के नियंत्रक से इन मूल्यों को एक्सेस कर सकते हैं?

+0

मैं बंडल अंदर से विन्यास को उजागर माना जाता है ... लेकिन क्या अगर मैं बंडल लेखक नहीं किया गया है? (इसके अलावा मैं वास्तव में इसे पूरा करने के लिए केवल बंडल कोड को नहीं बदलना चाहता हूं।) –

+0

और मैं केवल ** ** कॉन्फ़िगरेशन मानों को पढ़ना चाहता हूं। –

+1

यह निर्भर करता है कि आपने बंडल के कॉन्फ़िगरेशन बिल्डर को कैसे कार्यान्वित किया - यह अपने पैरामीटर को एक निश्चित उपसर्ग के साथ प्रस्तुत करता है। आपके मामले में यह 'my_bundle.devices' जैसा कुछ हो सकता है। अन्यथा, क्या आप अपने 'निर्भरता इंजेक्शन/MyBundleExtension.php' का कोड पोस्ट कर सकते हैं? –

उत्तर

9

पूरे config एक नेस्टेड सरणी के रूप में पैरामीटर paggy_boleto.config में सामने आ रहा है की तरह कर सकते हैं। इसे उपयोग करने के लिए, नियंत्रक में:

$config = $this->container->getParameter('paggy_boleto.config'); 

var_dump config, देखने के लिए आप इसे कैसे में प्रविष्टियों का उपयोग।

यदि आपको अन्य बंडल कॉन्फ़िगरेशन तक पहुंच की आवश्यकता है तो आपको बंडल एक्सटेंशन क्लास में एक नज़र डालना होगा, वे डी कंटेनर में कॉन्फ़िगरेशन का पर्दाफाश कैसे करते हैं। आपके जैसे कुछ बंडल पूरे कॉन्फ़िगरेशन का खुलासा करते हैं, कुछ अन्य बंडल नहीं करते हैं (वे केवल विशिष्ट पैरामीटर का पर्दाफाश करते हैं)।

PaggyBaletoBundle में यह प्रासंगिक line है:

$container->setParameter('paggy_boleto.config', $config); 
+0

धन्यवाद! मुझे पता है कि यह आसान था। मैंने एक या दो सप्ताह के लिए सिम्फनी 2 के साथ खेला है, फिर लार्वेल + एंगुलर.जेएस पर स्विच किया गया, अब वापस सिम्फनी 2 ... सिर में बहुत अधिक समवर्ती धागे! –

0

आपको उस उद्देश्य के लिए पैरामीटर.आईएमएल का उपयोग करना चाहिए। और फिर आप आसानी से अपने नियंत्रक में बातें इस

$parameters = $this->container->getParameter('devices'); 
+0

दरअसल [email protected]flat ने मुझे सही दिशा में इंगित किया ... और मुझे पहले से ही यह मिला: '$ this-> कंटेनर-> getParameter ('paggy_boleto.config');' –

+0

पैरामीटर.आईएमएल काम नहीं करेगा, अगर आपको अर्थपूर्ण पहुंच प्राप्त करने की आवश्यकता है बंडल विन्यास। –

3

यह निर्भर करता है कि कैसे आप बंडल के विन्यास बिल्डर लागू किया है - यह एक निश्चित उपसर्ग के साथ उसके मानदंड पहले जोड़ता।

your case के अनुसार यह paggy_boleto.config

+0

+1 आपने वास्तव में मेरी मदद की, आपकी टिप्पणी ने सही बिंदु पर मुझे यहां पोस्ट किए जाने से पहले जवाब "खोज" बना दिया। मैंने पज़ी के एक को स्वीकार किया क्योंकि उसने एक विस्तृत उत्तर लिखा था, उसके पास केवल 2.8k प्रतिनिधि है जबकि आपके पास पहले से 5k, et cetera है। मैं आपको बहुत धन्यवाद देता हूं, और मेरी इच्छा है कि मैं दोनों उत्तरों को स्वीकार कर सकूं और आपको सौ प्रतिनिधि अंक दे सकूं। एक हजार! तो, अंक पाजी जाते हैं, लेकिन आपका आभार और आशीर्वाद है! –

+0

@ जे ब्रुनी हाहा, धन्यवाद आदमी: डी –

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