Geçerli Joomla URL'sini al


25

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

Sıkı Standartlar: Yalnızca 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?


Btw. Joomla versiyonuna bağlı değil, PHP versiyonuna göre değişmektedir. Değişkenlerin referans olarak atanması PHP'de kullanımdan kaldırılmıştır
turson

3
Bunun için bir cevap istiyor herkes, Sadece bir not almak için TAM , URL yok kullanmak JUri::current()herhangi sorgu parametrelerini döndürmez olarak. Basitçe aşağıdaki kabul edilen cevapta açıklananları kullanın: joomla.stackexchange.com/a/4295/168
Lodder

Api doc'u
Anant

Yanıtlar:


36

GÜNCELLEŞTİRME

Ana sorunun cevabı şudur: JFactory :: getUri () kullanımdan kaldırılmıştır, JUri'yi şu şekilde kullanın:

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

// or simpler:

echo JUri::getInstance();
?>

Sıkı Standartları hata nedeniyle olduğunu &önce JFactory::getURI();. Bununla ilgili daha fazla bilgiyi aşağıda bulabilirsiniz.


ORİJİNAL CEVAP

& Sil

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

<?php echo $absolute_url; ?>

PHP5 ile newoperatör otomatik olarak bir referans döndürür, bu nedenle '&' artık gerekli değildir.

Resmi PHP kılavuzundan:

PHP 5'ten itibaren, yeni işleç otomatik olarak bir başvuru döndürür, bu nedenle yeni sonuç sonucunu PHP 5.3 ve sonraki sürümlerinde E_DEPRECATED mesajında ​​ve daha önceki sürümlerde E_STRICT mesajında ​​referans sonuçlarına göre atama.

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




5

GÜNCELLEME: JUri şimdi de kullanımdan kaldırıldı. Şimdi doğru yol şu şekilde:

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

Artık kullanımdan kaldırılan eski ileti:

JFactory::getURI();kullanımdan kaldırıldı. Geçerli URL'yi almak için doğru yöntem:

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

0

toStringGeçerli URL’yi alma yöntemine güvenmek yanlıştır. Bu toStringyöntem bunun için tasarlanmamıştır. Geçerli URL'yi almak için daha iyi, daha temiz ve geleceğe yönelik bir yaklaşım aşağıda verilmektedir:

$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;

O Not getFragmentyöntemi numarası işaretinden sonra bir kısmını iade, ancak bir çekirdek hata var gibi görünüyor gerektiğini bunu yapmaktan engeller onu.


Bu yanlış. Gösterecektir index.php&option=com_foo&view=bar. ?Sonra olmalıindex.php
Lodder

2
ToString kullanmak kesinlikle onun yasal. Kamuya açık bir yöntem ve JUri sınıfının kendisi tarafından yoğun olarak kullanılıyor. Hatta yöntem yorumu "Tam uri dizesini döndürür" der. JFactory kullanarak :: getUri (); kullanımdan kaldırıldı ve kesinlikle "daha yanlış".
fruppel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.