it-swarm-eu.dev

Ottieni l'URL Joomla corrente

Il seguente codice funziona in Joomla 1.6, ma genera un errore Strict Standards in 3.x:

Standard rigorosi: solo le variabili devono essere assegnate per riferimento

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

    <?php echo $absolute_url; ?>

Come posso far funzionare il codice senza l'errore in Joomla 3.x?

24
RustyJoomla

[~ ~ #] aggiornamento [~ ~ #]

La risposta alla domanda principale è: JFactory :: getUri () è deprecato, usa JUri direttamente in questo modo:

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

// or simpler:

echo JUri::getInstance();
?>

L'errore Standard rigorosi è dovuto al & Prima di JFactory::getURI();. Di seguito puoi trovare ulteriori informazioni al riguardo.


RISPOSTA ORIGINALE

Elimina il &

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

<?php echo $absolute_url; ?>

Con PHP5 l'operatore new restituisce automaticamente un riferimento, quindi '&' non è più necessario.

Dal manuale ufficiale PHP manuale:

A partire da PHP 5, il nuovo operatore restituisce automaticamente un riferimento, quindi assegnando il risultato di nuovo dai risultati di riferimento in un messaggio E_DEPRECATED in PHP 5.3 e versioni successive, e un messaggio E_STRICT nelle versioni precedenti.

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

36
fruppel

Secondo il tutorial di Joomla , puoi ottenere l'URL corrente con questa funzione:

JUri::current();
6
Ahmad Balavipour

PDATE:JUri ora è anche deprecato. Il modo corretto ora è il seguente:

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

Vecchio messaggio che ora è anche deprecato:

JFactory::getURI(); è obsoleto. Il metodo corretto per ottenere l'URL corrente è:

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

Affidarsi al metodo toString per ottenere l'URL corrente è sbagliato. Il metodo toString non è pensato per questo. Di seguito è riportato un approccio migliore, più pulito e a prova di futuro per recuperare l'URL corrente:

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

Si noti che il metodo getFragment dovrebbe restituire la parte dopo il segno numerico, ma sembra che ci sia un bug principale che gli impedisce di farlo.

0
itoctopus