Получить текущий URL Joomla

Следующий код работает в Joomla 1.6, но он вызывает ошибку строгих стандартов в 3.x:

Строгие стандарты: только переменные должны назначаться по ссылке

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

    <?php echo $absolute_url; ?>

Как я могу заставить код работать без ошибки в Joomla 3.x?

url
23 голоса | спросил RustyJoomla 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 15:13:56 +0400 2014, 15:13:56

4 ответа


31

UPDATE

Ответ на главный вопрос: JFactory :: getUri () устарел, используйте JUri следующим образом:

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

// or simpler:

echo JUri::getInstance();
?>

Ошибка Строгие стандарты связана с & перед JFactory::getURI();. Вы можете найти более подробную информацию об этом ниже.


ОРИГИНАЛЬНЫЙ ОТВЕТ

Удалите &

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

<?php echo $absolute_url; ?>

С PHP5 оператор new автоматически возвращает ссылку, поэтому '&' больше не требуется.

Из официального руководства PHP:

  

Начиная с PHP 5, новый оператор автоматически возвращает ссылку, поэтому присвоение результата нового по ссылке приводит к сообщению E_DEPRECATED в PHP 5.3 и более поздних версиях и сообщению E_STRICT в более ранних версиях.

источник: http://php.net/manual/en/language. operators.assignment.php

ответил fruppel 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 15:21:47 +0400 2014, 15:21:47
6

В соответствии с учебником Joomla вы можете получить текущий URL-адрес с помощью этой функции:

JUri::current();
ответил Ahmad Balavipour 20 Jam1000000amTue, 20 Jan 2015 09:57:16 +030015 2015, 09:57:16
3

JFactory::getURI(); устарел. Правильный способ получения текущего URL-адреса:

$uri = JUri::getInstance();
echo  $uri->toString();
ответил Søren Beck Jensen 31 PM00000010000004131 2016, 13:31:41
1

Использование метода 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 должен возвращать часть после знака числа, но, похоже, есть основная ошибка, которая мешает ей это делать.

ответил itoctopus 10 +03002016-10-10T14:51:23+03:00312016bEurope/MoscowMon, 10 Oct 2016 14:51:23 +0300 2016, 14:51:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132