현재 Joomla URL 가져 오기


25

다음 코드는 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에서 오류없이 코드가 작동하도록하려면 어떻게해야합니까?


Btw. Joomla 버전이 아니라 PHP 버전에 의존합니다. 참조로 변수를 할당하는 것은 PHP에서 더 이상 사용되지 않습니다
turson

3
전체 URL 을 얻기 위해 이에 대한 답변을 찾는 사람에게만 메모 하면 쿼리 매개 변수가 반환 되지 않으므로 사용 하지 마십시오JUri::current() . 아래의 허용 된 답변에 설명 된 내용을 사용하십시오. joomla.stackexchange.com/a/4295/168
Lodder

답변:


36

최신 정보

주요 질문에 대한 대답은 다음과 같습니다. 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부터 new 연산자는 참조를 자동으로 반환하므로 참조로 new 결과를 할당하면 PHP 5.3 이상의 E_DEPRECATED 메시지와 이전 버전의 E_STRICT 메시지가 나타납니다.

출처 : http://php.net/manual/en/language.operators.assignment.php




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
Lodder

2
toString을 사용하는 것이 합법적입니다. 그것은 공개 방법이며 JUri 클래스 자체에서 많이 사용합니다. 메서드 주석조차도 "전체 uri 문자열을 반환합니다." JFactory :: getUri (); 사용하기 더 이상 사용되지 않으며 "더 이상 잘못"입니다.
fruppel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.