2010-03-29 9 views
5

से Application.ini मानों को पढ़ना मैं अपनी application.ini फ़ाइल में अपनी Google मानचित्र API कुंजी को स्टोर करने का प्रयास कर रहा हूं, और जब भी इसकी आवश्यकता हो, मैं इसे अपने नियंत्रक से इसे पढ़ने में सक्षम होना चाहता हूं। मैं अपने नियंत्रक से application.ini से मूल्यों को पढ़ने के बारे में कैसे जा सकता हूं?ज़ेंड फ्रेमवर्क - नियंत्रक

धन्यवाद!

उत्तर

3

या तो FrontController

// bootstrap 
$front->setParam('GMapsApiKey', 123456); 

// controller 
$this->getFrontController()->getParam('GMapsApiKey'); 

या रजिस्ट्री के माध्यम से:

// bootstrap 
Zend_Registry::set('GMapsApiKey', '123456'); 

// controller 
Zend_Registry::get('GMapsApiKey'); 

हालांकि, बाद से गूगल मैप्स एपीआई के लिए उपयोग कुछ है कि मॉडल में होता है, अपने नियंत्रक पता करने की जरूरत नहीं होनी चाहिए एपीआई कुंजी।

+0

क्या मुझे इसकी आवश्यकता होने पर इसे पढ़ने का कोई तरीका है? मैं प्रत्येक अनुरोध पर बूटस्ट्रैप में ऐसा करने से बचने की कोशिश कर रहा था, क्योंकि इसे केवल – Ryan

+0

@Ryan बूटस्ट्रैप और application.ini को प्रत्येक अनुरोध पर बुलाया जाएगा, इसलिए आपको कुछ भी हासिल नहीं होगा, लेकिन आपको कुछ भी नहीं मिलेगा microsecond इस तरह से ऐसा नहीं कर रहा है। यदि आप मांग पर application.ini लोड करेंगे, तो आपके पास एक अतिरिक्त I/O अनुरोध होगा। यह बहुत धीमा है। – Gordon

+0

धन्यवाद गॉर्डन, जो बहुत समझ में आता है। मैं उलझन में हूं कि यह मॉडल में कैसे होगा। मैं Google मानचित्र के लिए प्रदाता (उर्फ "मॉडल") बनाने की योजना बना रहा था, लेकिन आखिरकार मुझे इसे जावास्क्रिप्ट एपीआई अनुरोध के माध्यम से Google के पास पास करने के लिए दृश्य में इसकी आवश्यकता है। – Ryan

5

This आलेख आपकी मदद कर सकता है। लेखक बताता है कि application.ini फ़ाइल से जीमेल कनेक्शन पैरा कैसे प्राप्त करें।

आप कोशिश करना चाहते हो सकता है:

$bootstrap = $this->getInvokeArg('bootstrap'); 
$aConfig = $bootstrap->getOptions(); 
googleMapsKey = $aConfig['your_resource']['your_key']; 
+3

यदि आप फ्रंट कंट्रोलर में हैं तो यह अच्छा समाधान है। विकल्पों का एक पूरा सेट यहां है: http://akrabat.com/zend-framework/accessing-your-configuration-data-in-plication-ini/ –

5

मैं बूटस्ट्रैप में यह करने के लिए करते हैं, और फिर गॉर्डन रजिस्ट्री में यह टॉस उल्लेख के रूप में। फिर आप रजिस्ट्री से कहीं भी इसे प्राप्त कर सकते हैं।

$this->config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); 
Zend_Registry::set('config', $this->config); 

इसके अलावा, अपनी बात करने के लिए, नियंत्रक इसके लिए गलत जगह होने के लिए, जाते हैं जब तक आप कई कुंजी के साथ एपीआई तक पहुँच रहे हैं, मुझे लगता है, लेकिन फिर भी आप में तर्क जगह में सक्षम होना चाहिए रजिस्ट्री से एक कुंजी का चयन करने के लिए मॉडल।

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