2012-02-22 14 views
5

वहाँ रहे हैं के लिए कुछ उचित Zend तरीके:Zend फ्रेमवर्क: सार्वजनिक पथ मिलता है, आवेदन यूआरएल पाने

एक)/सार्वजनिक निर्देशिका

ख) प्राप्त आवेदन यूआरएल

असल में मैं कर रहा हूँ करने के लिए पथ प्राप्त नियंत्रक में परिभाषित विधियों का उपयोग करके, लेकिन यदि वे निकलते हैं तो तैयार विधियों का उपयोग करने का अधिकार लगता है।

protected function _getApplicationUrl() { 
    return $_SERVER['SERVER_NAME']; 
} 

protected function _getPublicPath() { 
    return realpath(APPLICATION_PATH . '/../public/'); 
} 

उत्तर

6

आवेदन यूआरएल के बारे में, Zend_Controller_Request_Http एक getRequestUri() विधि है, लेकिन यह जानबूझ कर (और कुछ हद frustratingly) URL के योजना और होस्टनाम भागों शामिल नहीं है। मेरे ऐप्स में मैंने बूटस्ट्रैप में $_SERVER['HTTP_HOST'] को पकड़ने और इसे रजिस्ट्री में संग्रहीत करने का सहारा लिया है ताकि पूर्ण URL बनाने के बाद मैं इसे बाद में उपयोग कर सकूं।

और स्मृति से, नहीं, public फ़ोल्डर का स्थान प्राप्त करने के लिए कोई अंतर्निहित विधि नहीं है, लेकिन आपके पास कोड ठीक है। अधिकांश ऐप्स मैंने define()index.php में सभी पथ देखे हैं, जो मुझे लगता है कि थोड़ा सा सुरक्षित है (केवल इसलिए कि पथ नाम जल्द ही सेट हो जाते हैं और पूरी तरह से अपरिवर्तनीय हो जाते हैं) और कभी भी थोड़ा तेज़ हो जाते हैं, लेकिन माइक्रो-ऑप्टिमाइज़ेशन के बारे में बहस नहीं करते हैं ! :-)

3

1) यदि आपका वर्चुअल होस्ट ZF/public को इंगित करता है तो दृश्य में आप सहायक विधि $this->baseUrl(); द्वारा पथ प्राप्त कर सकते हैं नियंत्रक $this->view->baseUrl(); अन्यथा अपना स्वयं का सहायक बनाएं और इसका उपयोग करें। 2) नियंत्रक $this->getRequest()->getHttpHost();

+0

'$ this-> getRequest() -> getHttpHost();'! के लिए उपरोक्त – HPM

+0

'getHTTPPost()' का उपयोग करने के लिए कक्षा को शामिल करने के लिए क्या किया जाता है? – Kuttoozz

0
protected function _getPublicPath() { 
    chdir(APPLICATION_PATH); 
    return realpath("../public"); 
} 
1

एक)/सार्वजनिक निर्देशिका

निर्मित php-समारोह getcwd() आप अपनी साइट मेजबान फ़ोल्डर (पूर्व के लिए पथ दे देंगे करने के लिए पथ प्राप्त करने में। आउटपुट "/home/my_cp/public_html/my_site.loc/www")। और फिर, आप जो भी रास्ता चाहते हैं उसका निर्माण कर सकते हैं।

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