it-swarm.com.de

Ruft die aktuelle Joomla-URL ab

Der folgende Code funktioniert in Joomla 1.6, löst jedoch einen Strict Standards-Fehler in 3.x aus:

Strenge Standards: Nur Variablen sollten per Referenz zugewiesen werden

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

    <?php echo $absolute_url; ?>

Wie kann ich den Code ohne den Fehler in Joomla 3.x zum Laufen bringen?

24
RustyJoomla

[~ # ~] Update [~ # ~]

Die Antwort auf die Hauptfrage lautet: JFactory :: getUri () ist veraltet, verwenden Sie JUri direkt wie folgt:

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

// or simpler:

echo JUri::getInstance();
?>

Der Fehler Strict Standards liegt am & Vor JFactory::getURI();. Weitere Informationen dazu finden Sie weiter unten.


ORIGINAL ANTWORT

Löschen Sie die &

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

<?php echo $absolute_url; ?>

In PHP5 gibt der Operator new automatisch eine Referenz zurück, sodass das '&' nicht mehr benötigt wird.

Aus dem offiziellen PHP manual:

Ab PHP 5 gibt der Operator new automatisch eine Referenz zurück. Wenn Sie also das Ergebnis von new nach Referenz zuweisen, erhalten Sie eine E_DEPRECATED-Nachricht in PHP 5.3 und höher, und eine E_STRICT-Nachricht in früheren Versionen.

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

36
fruppel

Laut dem Joomla-Tutorial können Sie die aktuelle URL mit dieser Funktion erhalten:

JUri::current();
6

PDATE:JUri ist jetzt auch veraltet. Der richtige Weg ist jetzt wie folgt:

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

Alte Nachricht, die jetzt auch veraltet ist:

JFactory::getURI(); ist veraltet. Die richtige Methode zum Abrufen der aktuellen URL lautet:

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

Es ist falsch, sich auf die Methode toString zu verlassen, um die aktuelle URL abzurufen. Die Methode toString ist dafür nicht vorgesehen. Das Folgende ist eine bessere, sauberere und zukunftssichere Methode zum Abrufen der aktuellen 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;

Beachten Sie, dass die getFragment -Methode den Teil nach dem Nummernzeichen zurückgeben sollte, aber es scheint einen Kernfehler zu geben, der dies verhindert.

0
itoctopus