Lesbare URLs in eigenen Contao-Modulen

21
Mar
2015

Wie man Parameter an eine URL anhängt, wissen wohl die meisten PHP-Programmierer. Aber wie mache ich aus test.html?param1=wert&param2=wert eine URL in der Form test/param1/wert/param2/wert.html?

Nötig dazu ist nur die Benutzung einer Hilfsfunktion von Contao, die für uns die entsprechende URL generiert. Und zweitens und noch viel wichtiger: Wie kann man aus der URL die benötigten Parameter wieder herauslösen ohne einen 404-Fehler zu bekommen?

Das alles erkläre ich in einem kurzen Video und liefere auch noch den benötigten Code dazu mit.

Und hier der Code dazu.

In der Funktion compile meines Frontendmoduls werden die benötigten URLs generiert:

$url = $this->generateFrontendUrl($objPage->row(),'/round/1/pairing/2');
$link .= '<a href="'.$url.'">Link</a></li>';

Im Beispiel werden an die Hilfsfunktion zuerst das Page-Objekt mit einer Funktion die das Seitenalias zurückgibt übergeben. Als zweiter Parameter folgt ein String mit den von uns benötigten Variablen round (mit Wert 1) und pairing (mit Wert 2).
In $url steht dann z.B. "seitenalias/round/1/pairing/2.html".

In der Funktion generate des Frontendmoduls muß die Url komplett wieder aufgelöst werden. Komplett heißt in dem Fall: mit allen möglichen Parametern, die von meinem Modul irgendwann verwendet werden. Vergessen wir einen Parameter, erzeugt Contao einen 404-Fehler.

\Input::setGet('round', \Input::get('round'));
\Input::setGet('pairing', \Input::get('pairing'));
\Input::setGet('season', \Input::get('season'));
$saison = \Input::get('season');
$paarung = \Input::get('pairing');
$runde = \Input::get('round');

Im Beispiel wird auch noch die Variable season abgefragt, die von mir allerdings gar nicht angelegt wurde. Da sie aber in meinem Modul an anderer Stelle verwendet wird, muß sie mit aufgelöst werden.

In meiner Contao-Installation sind "URLs umschreiben" und "Auto_item aktivieren" übrigens aktiviert, weswegen sich die Abfrage von item in meinem Modul erübrigt. Mehr dazu findet ihr im Contao-Forum.

Datum: | Autor: Frank Hoppe

Zurück

Einen Kommentar schreiben

Kommentar von Schachbücher |

Sehr cooler Artikel!

Alle Rechte vorbehalten © 2011 - 2017 - Frank Hoppe
Das Layout basiert auf dem Baltimore-Theme von John Schop
Administration