2012-06-14 16 views
13

मेरे विचार में मुझे पूरा यूआरएल आकर्षित करने की जरूरत है। इस तरह:जेडएफ 2: ज़ेंड फ्रेमवर्क 2 होस्ट यूआरएल सहित पूर्ण यूआरएल

http://hostename.com/default/url 

जब मैं $this->url('default', array(1,2,3)) इस्तेमाल करने की कोशिश मैं केवल /index/get/ मिलता है। क्या मेजबान नाम पर कोई ज़ेंड विधि है या मुझे इसके बजाय $_SERVER['HTTP_HOST'] का उपयोग करना है?

उत्तर

13

ज़ेंड दृश्य में पूर्ण यूआरएल बनाने के लिए एक ज़ेंड \ व्यू \ हेल्पर \ सर्वर यूआरएल है। अपने दृश्य टेम्पलेट में कोड के नीचे आज़माएं।

<?php echo $this->serverUrl()?> 
+3

प्रश्न के बारे में ध्यान में रखते हुए पूर्ण यूआरएल उत्पन्न कर रहा है। लेकिन अगर कोई यहां नियंत्रक में इसे कैसे करना है, तो यह यहां है: '$ this-> getRequest() -> getServer ('HTTP_HOST') प्राप्त करें। $ this-> url() -> से रूट ('carrinho/compra-efetuada') ' – vinigarcia87

42

आप राउटर पर force_canonical विकल्प का उपयोग कर सकते हैं।

url($route, $params, $options) 

तो तुम तो कुछ इस तरह कर सकते हैं::

$this->url('myroute', array('id' => 123), array('force_canonical' => true)) 
+0

इस कार्यक्षमता को दस्तावेज़ में कहीं भी संदर्भित नहीं किया गया है और मुझे लगता है कि यह काफी आम बात है। क्या आप जानते हैं कि उदाहरण के लिए https का उपयोग करने के लिए इसे कैसे मजबूर करना है? मैं पैरामीटर या विकल्प के रूप में 'योजना' => 'https' जैसी कुछ चीज़ों का उपयोग करने की अपेक्षा करता था लेकिन ऐसा लगता है कि यह आसान नहीं है –

+0

@ डोमिनिक वाटसन मुझे यकीन नहीं है कि योजना को सेट करने का कोई विकल्प है या नहीं। मैं इस उदाहरण की तरह ज़ेंड \ Url \ Http का उपयोग करके एक https url बना देता हूं: http://stackoverflow.com/questions/20122535/how-to-forced-https-instead-of-http-after-user-login-in- zend-framework2/20125800 # 20125800 –

22

मैं इस article कुछ दिलचस्प तरीके के साथ पाया:

1 सभी रूटर विकल्पों यूआरएल सहायक के तीसरे पैरामीटर में जाने) पैरामीटर के बिना एक खाली सरणी का उपयोग करें:

// Using a route with the name "register" and the route "/register" 
echo $this->url('register', array(), array('force_canonical' => true)); 
// Output: http://mydomain.com/register 

2) टिप्पणी के बीच मतभेद:

echo $this->serverUrl(); 
// Output: http://mydomain.com 

और

// Current URL: http://mydomain.com/register 
echo $this->serverUrl(true); 
// Output: http://mydomain.com/register 

3) मार्ग

// The "register" route has the following route: /register 
echo $this->serverUrl($this->url('register')); 
// Output: http://mydomain.com/register 
+0

धन्यवाद तीसरा तरीका – Athlan

0

आप विश्व स्तर पर बुनियादी URL सेट करना चाहते हैं से शुरू, आप इसे बूटस्ट्रैप विधि का उपयोग कर कर सकते हैं:

$e->getApplication()->getMvcEvent()->getRouter()->setBaseUrl($baseUrl); 

इस मामले में नेविगेशन हेल्पर्स इसका भी उपयोग करेंगे।

के रूप में वर्णित in this thread वर्तमान आधार URL उपयोग serverURL सहायक लाने के लिए:

$serverUrl = $e->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl'); 
$baseUrl = $serverUrl->__invoke(); 
+0

"$ serverUrl -> __ invoke();" ?? "__invoke()" इसे "$ serverUrl()" के रूप में चलाने में सक्षम नहीं है? – Zippp

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