aus "Stud.IP-Entwicklerdokumentation"

Entwickler: URLHelper

Benutzung der Klasse URLHelper

Auf dieser Seite... (ausblenden)

  1. 1. Allgemeines
  2. 2. Methoden der Klasse URLHelper
  3. 3. Probleme durch URL-Parameter
  4. 4. Beispiele
  5. 5. URLHelper für Javascript

Zur Vereinfachung der Umstellung von vorhandenem PHP-Code auf Tabbed-Browsing und um allgemein die Verwendung von Session-Variablen auf ein sinnvolles Maß zurückzuführen, wurde mit dem Lifter001 die Klasse URLHelper eingeführt. Neuer Code muß diese Klasse verwenden, um Verweise auf andere Seiten (oder die gleiche Seite) in Stud.IP zu erzeugen. Externe Links und Bereiche von Stud.IP, die bereits eigene Funktionen zur Link-Erzeugung verwenden, sind von der Verwendung des URLHelper ausgenommen. Das sind im einzelnen:

Alle anderen Links - insbesondere auch Links aus Plugins auf Seiten im Stud.IP-Kernsystem - müssen so umgestellt werden, daß sie die Klasse URLHelper zur Erzeugung der URL verwenden.

1.  Allgemeines

Hauptzweck dieser Klasse ist es, alle Links auf einer Seite nach Bedarf um zusätzliche URL-Parameter erweitern zu können, ohne immer wieder alle Links anpassen zu müssen. Insbesondere bei durch Hilfsfunktionen oder -klassen erzeugten Links wäre so ein Anpassen teilweise auch überhaupt nicht (sinnvoll) möglich.

Die Grundidee dabei ist relativ simpel: Es gibt eine globale Liste von "automatischen" - d.h. bei der URLHelper-Klasse registrierten - Link-Parametern sowie eine Hilfsfunktion getLink(), die eine übergebene URL mit diesen registrierten Parametern versieht. Der Aufrufer von getLink() muß sich also nicht darum kümmern, welche zusätzlichen Parameter gerade eingebaut werden sollen. In Stud.IP wird dieser Mechanismus zum Beispiel dafür verwendet, um die aktuell gewählte Veranstaltung oder die auf einer Seite eingestellten Ansichtsoptionen bei jedem Klick weiterzureichen, ohne diese serverseitig in der Session speichern zu müssen (was bei Tabbed-Browsing unweigerlich zu Problemen führen würde).

Ein einfaches Beispiel könnte so aussehen:

  1. // $view enthält die gewählte Ansicht
  2. URLHelper::addLinkParam('view', $view)
  3.  
  4. [...]
  5.  
  6. switch ($view) {
  7.     case 'show':    // normale Ansicht der Seite
  8.         [...]
  9.     case 'search'// Suchergebnisse anzeigen
  10.         [...]
  11.     case 'edit':    // Seite bearbeiten
  12.         [...]
  13. }
  14.  
  15. [...]
  16.  
  17. // Ausgabe erzeugen (kann auch im Template sein)
  18. echo '<a href="'.URLHelper::getLink('', array('page' => 25)).'">...</a>';

Der aktuelle Inhalt der Variablen $view wird dann automatisch zu dem so erzeugten Link hinzugefügt und man erhält so etwas wie:

<a href="?page=25&amp;view=edit">

Natürlich kann jeder Link auch eigene Parameter enthalten, die spezifisch für diesen Link sind. Diese würden dann direkt im Aufruf von getLink() angegeben und nicht global als Parameter registriert. Lokal im Aufruf angegebene Parameter haben dabei Vorrang vor den global registrierten, d.h. man kann bei bei Bedarf auch für einzelne Links registrierte Parameter mit anderen Werten versehen oder ganz ausblenden (Parameter beim Aufruf auf NULL setzen).

2.  Methoden der Klasse URLHelper

An dieser Stelle sind die wichtigsten Operation der Klasse URLHelper gesammelt und dokumentiert. Es handelt sich dabei jeweils um Klassenmethoden, d.h. der Aufruf erfolgt über URLHelper::Name.

3.  Probleme durch URL-Parameter

Durch die Verwendung des URLHelper können auch neue Proleme auftreten, die bei der Nutzung von Session-Variablen nicht oder nicht im dem Maße bestehen. Es eignen sich auch nicht alle Arten von Session-Daten zur Übergabe über die URL, so daß man im Einzelfall abwägen muß, ob eine Umstellung sinnvoll ist. Dabei sollten die folgenden Punkte berücksichtigt werden:

4.  Beispiele

Hier sollten einige kleine Bespiele für die Verwendung des URLHelper aus dem praktischen Einsatz in Stud.IP gesammelt werden. Leider gibt es hier noch nicht viel...

  1. $link = URLHelper::getLink('wiki.php', array('keyword' => $keyword));
  2. echo '<a href="'.$link.'">'.htmlReady($keyword).'</a>';

5.  URLHelper für Javascript

Unabhängig hiervon gibt es auch einen URLHelper für Javascript, der eine ähnliche API aufweist und auch ähnliches tut. Jedoch sind diese beiden URLHelper nicht aufeinander abgestimmt und völlig unabhängig voneinander.

URL: https://docs.studip.de/develop/Entwickler/URLHelper
Zuletzt geändert am 11.05.2010 12:05 Uhr