2012-02-15 7 views
8

मुझे आश्चर्य है कि मुझे @somevar या %somevar% जैसे symfony2 की yaml कॉन्फ़िगरेशन में विशेष वाक्यविन्यास के बारे में अधिक जानकारी कहां मिल सकती है?सिम्फनी 2 वाईएएमएल पासिंग एरे

उदाहरण के लिए, @ का उपयोग कर किसी सेवा को कॉल परिभाषित करता है, इस प्रकार हम सेवाओं पर निर्भरता को पार करते हैं। %somevar% दूसरी तरफ somevar नाम के साथ पहले से परिभाषित पैरामीटर के मान को संदर्भित करता है।

तो, अगर मैं ऐसा:

parameters: 
    custom: "some value" 
    another: %custom% 

तो anothercustom का मूल्य है, जो मेरे मामले में "कुछ मान है" के साथ भरे जाएंगे। मेरा सवाल है, इन संबंधों को कहां दस्तावेज किया गया है?

मेरी विशेष आवश्यकता %somevar[somekey]% जैसी कुछ सरणी के तत्व को संदर्भित करने में सक्षम होना है, लेकिन यह वाक्यविन्यास काम नहीं करता है।

अग्रिम धन्यवाद!

संपादित करें: Full merge key support. Full support for references, aliases, and full merge key. Don't repeat yourself by referencing common configuration bits.

YAML डॉक्स में

, लेकिन इसके बारे में कोई furthur प्रलेखन ..

उत्तर

0

क्या आप खोज रहे हैं YAML खुद के बारे में वास्तव में नहीं है, लेकिन के YAML लोडर के बारे में: मैं इस पाया निर्भरता इंजेक्शन कंटेनर। http://components.symfony-project.org/dependency-injection/trunk/book/05-Service-Description

Symfony2 एक नया घटक (इसी सिद्धांत के आधार पर) के साथ आता है:

आप इसके बारे में डॉक्स खोज करते हैं, यहां पुराने घटक (v1) के लिए होते हैं। आप यहां आधिकारिक दस्तावेज़ ढूंढ सकते हैं: http://symfony.com/doc/current/book/service_container.html#service-parameters

आपकी समस्या के बारे में, आप DI पैरामीटर की कुंजी तक नहीं पहुंच सकते हैं, आपको मैन्युअल रूप से फ़्लैट करना होगा।

आप अपनी आवश्यकता के अनुरूप डीआई एक्सटेंशन का उपयोग कर सकते हैं, कुछ बंडलों पर उदाहरण लें: https://github.com/symfony/AsseticBundle/blob/master/DependencyInjection/AsseticExtension.php#L54 (शायद सबसे अच्छा उदाहरण नहीं)।

+0

धन्यवाद, वास्तव में मुझे डुप्लीकेट से बचने के लिए, अन्य पैरामीटर के अंदर पैरामीटर को संदर्भित करने की आवश्यकता है। तो, यह डीआई तक भी नहीं है। मुझे पता चला कि वाईएएमएल के उपनाम चाल चल सकते हैं, मुझे बस उन प्रविष्टियों को टैग करना होगा जिन्हें मुझे चाहिए और फिर उन्हें यहां दिखाए गए अनुसार संदर्भित करें: http://code.google.com/p/snakeyaml/wiki/Documentation#Aliases के रूप में नहीं जैसा कि मैंने उम्मीद की लचीला, लेकिन चाल चल जाएगा। फिर भी धन्यवाद! –