वर्तमान जूमला URL प्राप्त करें


25

निम्नलिखित कोड जूमला 1.6 में काम करता है, लेकिन यह 3.x में एक सख्त मानक त्रुटि फेंकता है:

सख्त मानक: केवल चर को संदर्भ द्वारा निर्दिष्ट किया जाना चाहिए

    //Get the full URL for sharing purposes
    $uri = & JFactory::getURI();
    $absolute_url = $uri->toString();

    <?php echo $absolute_url; ?>

मुझे जूमला 3.x में त्रुटि के बिना काम करने के लिए कोड कैसे मिल सकता है?


Btw। यह जूमला वर्जन पर नहीं बल्कि PHP वर्जन पर निर्भर करता है। संदर्भ द्वारा चर को निर्दिष्ट करना PHP में
चित्रित किया

3
FULL URL प्राप्त करने के लिए जो कोई भी इसके लिए उत्तर चाहता है, उसे बस एक नोट करें, इसका उपयोग करें JUri::current()क्योंकि यह किसी भी क्वेरी पैरामीटर को वापस नहीं करेगा। नीचे दिए गए उत्तर में बताए गए शब्दों का प्रयोग करें: joomla.stackexchange.com/a/4295/168
Lodder

बेस्ट देखने के लिए एपीआई दस्तावेज़ api.joomla.org/cms-3/classes/Joomla.CMS.Uri.Uri.html
अनंत

जवाबों:


36

अद्यतन करें

मुख्य प्रश्न का उत्तर है: JFactory :: getUri () पदावनत है, सीधे JUri का उपयोग करें:

<?php 
$uri = JUri::getInstance(); 
echo $uri->toString();

// or simpler:

echo JUri::getInstance();
?>

सख्त मानक त्रुटि के कारण है &पहले JFactory::getURI();। आप इसके बारे में अधिक जानकारी नीचे पा सकते हैं।


मूल ANSWER

हटाएँ और

//Get the full URL for sharing purposes
$uri = JFactory::getURI();
$absolute_url = $uri->toString();

<?php echo $absolute_url; ?>

PHP5 के साथ newऑपरेटर स्वचालित रूप से एक संदर्भ देता है, इसलिए 'और' की अब आवश्यकता नहीं है।

आधिकारिक PHP मैनुअल से:

PHP 5 के रूप में, नया ऑपरेटर स्वचालित रूप से एक संदर्भ देता है, इसलिए PHP 5.3 में और बाद में E_DEPRECATED संदेश में संदर्भ परिणामों द्वारा नए का परिणाम निर्दिष्ट करता है, और पूर्व संस्करणों में E_STRICT संदेश।

स्रोत: http://php.net/manual/en/language.operators.assignment.php


मेरा जवाब यहाँ देखें-> stackoverflow.com/questions/23702983/…
ezcodr

8

जूमला ट्यूटोरियल के अनुसार , आप इस फ़ंक्शन द्वारा वर्तमान URL प्राप्त कर सकते हैं:

JUri::current();

4
JUri :: current () क्वेरी या खंड भागों के बिना वर्तमान अनुरोध URI लौटाता है । उदाहरण के लिए, यदि आप निम्न URL पर जाते हैं: स्थानीय होस्ट / joomla3 / index.php / घटक / उपयोगकर्ता? देखें = याद रखें JUri :: current () वापस आएगा: localhost / joomla3 / index.php / घटक / उपयोगकर्ता
fruppel

5

अद्यतन: JUri अब भी हटा दिया गया है। सही तरीका अब इस प्रकार है:

$uri = Joomla\CMS\Uri\Uri::getInstance();
echo  $uri->toString();

पुराना संदेश जो अब समाप्त हो गया है:

JFactory::getURI();पदावनत किया गया है। वर्तमान URL प्राप्त करने की सही विधि है:

$uri = JUri::getInstance();
echo  $uri->toString();

0

toStringवर्तमान URL प्राप्त करने की विधि पर भरोसा करना गलत है। toStringविधि के लिए नहीं है। वर्तमान URL को पुनः प्राप्त करने के लिए निम्नलिखित एक बेहतर, स्वच्छ और भविष्य प्रमाण है:

$objJURI = JFactory::getURI();
$strQuery = '';
if (!empty($objJURI->getQuery()))
    $strQuery = '?'.$objJURI->getQuery();
$strFragment = '';
if ((!empty($objJURI->getFragment())) && ($objJURI->getFragment() != '#'))
    $strFragment = $objJURI->getFragment();
$currentURL = $objJURI->current().$strQuery.$strFragment;

ध्यान दें कि getFragmentविधि को संख्या चिह्न के बाद भाग वापस करना चाहिए, लेकिन ऐसा लगता है कि एक कोर बग है जो इसे ऐसा करने से रोकता है।


ये गलत है। यह प्रदर्शित करेगा index.php&option=com_foo&view=bar। इसके ?बाद होना चाहिएindex.php
लॉडर

2
इसका पूरी तरह से वैध उपयोग करने के लिए। इसका सार्वजनिक तरीका और जोरू वर्ग द्वारा ही इस्तेमाल किया जाता है। यहां तक ​​कि विधि टिप्पणी कहती है, "पूर्ण यूरि स्ट्रिंग लौटाता है।" JFactory का प्रयोग :: getUri (); पदावनत और निश्चित रूप से "अधिक गलत" है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.