web-gelistirme-sc.com

Mevcut Joomla URL'sini alın

Aşağıdaki kod Joomla 1.6'da çalışır, ancak 3.x'te Sıkı Standartlar hatası verir:

Katı Standartlar: Sadece değişkenler referans olarak atanmalıdır

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

    <?php echo $absolute_url; ?>

Joomla 3.x'te kodun hatasız çalışmasını nasıl sağlayabilirim?

25
RustyJoomla

[~ # ~] Güncelleme [~ # ~]

Ana sorunun cevabı: JFactory :: getUri () kullanımdan kaldırıldı, JUri'yi doğrudan şu şekilde kullanın:

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

// or simpler:

echo JUri::getInstance();
?>

Sıkı Standartlar hatası, JFactory::getURI(); öncesi & Kaynaklıdır. Bununla ilgili daha fazla bilgiyi aşağıda bulabilirsiniz.


ORİJİNAL CEVAP

& öğelerini silin

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

<?php echo $absolute_url; ?>

PHP5 ile new operatörü otomatik olarak bir referans döndürür, bu yüzden '&' artık gerekli değildir.

Resmi PHP kılavuzundan:

PHP 5 itibariyle, yeni operatör otomatik olarak bir başvuru döndürür, bu nedenle yeni referansın sonucunu atamak PHP 5.3 ve sonraki sürümlerinde bir E_DEPRECATED iletisi ile sonuçlanır, ve önceki sürümlerde bir E_STRICT mesajı.

kaynak: http://php.net/manual/en/language.operators.assignment.php

37
fruppel

Joomla tutorial göre, mevcut URL'yi bu işlevle alabilirsiniz:

JUri::current();
8
Ahmad Balavipour

GÜNCELLEME:JUri artık kullanımdan kaldırıldı. Şimdi doğru yol aşağıdaki gibidir:

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

Artık kullanılmayan eski mesaj:

JFactory::getURI(); kullanımdan kaldırıldı. Geçerli URL'yi almanın doğru yöntemi:

$uri = JUri::getInstance();
echo  $uri->toString();
5
Søren Beck Jensen

Geçerli URL'yi almak için toString yöntemine güvenmek yanlış. toString yöntemi bunun için tasarlanmamıştır. Mevcut URL'yi almak için daha iyi, daha temiz ve geleceğe dönük bir yaklaşım aşağıdadır:

$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 yönteminin sayı işaretinden sonra parçayı döndürmesi gerektiğini unutmayın, ancak bunu yapmasını engelleyen temel bir hata var gibi görünüyor.

0
itoctopus