Das Herz des RewriteRouter ist die Definition der benutzerdefinierten Routen. Routen werden
durch Aufruf der addRoute
Methode des RewriteRouter erstellt:
$router->addRoute('user', 'user/:username');
Der erste Parameter ist der Name der Route. Zum derzeitigen Zeitpunkt ist er redundant
aber wird in Zukunft in einem URL View Helper verwendet, um eine einfache Erstellung von
URLs in deinen Views zu ermöglichen. Wenn du die vorher konfigurierte, benannte Route
verwenden möchtest, kannst du sie mit den getRoute
Methode des RewriteRouter
erhalten.
Der zweite Parameter ist eine Route, die auf eine URL passt - zum Beispiel passt die obige
Route auf http://example.com/user/martel
. Der Doppelpunkt in einer Route
markiert eine URL Variable, die durch die Zend_Controller_Action::_getParam
Methode zugänglich ist. In unserem Beispiel wird der mit 'username' benannte Parameter auf
den Wert 'martel' gesetzt.
![]() |
Anmerkung |
---|---|
Routes werden in umgekehrter Reihenfolge abgeglichen, so dass du sicherstellen musst, dass die allgemeinste Route als erstes definiert ist. |
![]() |
Anmerkung |
---|---|
Fürs Erste erlaubt die aktuelle Implementation die Verwendung jedes Zeichens für den Variablenbezeichner außer den Schrägstrich (/), es wird aber sehr empfohlen, dass du nur Zeichen verwendest, die für PHP Variablen verwendet werden dürfen. In Zukunft wird die Implementation vermutlich angepasst und dies könnte Fehler in deinen Code einführen. |
Es gibt zwei besondere Variablen, die in deinen Routen verwendet werden können - 'controller' und 'action'. Diese besonderen Variablen werden verwendet, um einen gewählten Controller und/oder eine Aktion in der URL zu finden. Die 'action' Variable muß immer entweder in der Route oder als Standardparameter definiert sein. Die 'controller' Variable wird stanardmäßig auf IndexController verweisen, wenn sie nicht definiert wurde.
$router->addRoute('user', ':controller/:action');
Wenn du deinen Browser mit dieser Route auf http://example.com/news/latest
richtest, wird der Zend_Controller_Dispatcher
die Aktion latestAction deines
Controllers NewsController ausführen.