Kristof Dreier — where tech meets text
Willkommen im privaten Blog von Kristof Dreier, Webentwickler und Mac-Enthusiast aus Münster. Thematisch dreht es sich hier um Webdevelopment mit dem Zend Framework, kleinere Einschübe über Cocoa und vielleicht auch mal ein Blick in die Weiten von Ruby on Rails.
Zend Framework und das Routing
Für David von Technikwürze habe ich letzte Woche ein kurze Anleitung geschrieben, wie man dem Zend Framwork das Routing beibringt. Ein gewisses Verständnis vom Zend Framework sollte man schon mitbringen, damit man ein wenig die Zusammenhänge versteht, ansonsten gebe ich aber auch gerne Hilfestellung in den Kommentaren, falls es gar nicht klappen sollte. Fangen wir am besten aber gleich an.
Let's route
Damit wir Routen innerhalb unserer Anwendungen nutzen können, brauchen wir natürlich erstmal eine Rewrite_Router-Instanz, in die wir unsere geparste routes.xml injizieren. Außerdem legen wir unser Router-Objekt in der Registry ab, damit wir im nächsten Schritt dem Zend_Controller mitteilen können, dass er unseren Router zusätzlich nutzen soll.
- <?php
- $router = new Zend_Controller_Router_Rewrite();
- $router->addConfig(new Zend_Config_Xml(ROOT_DIR . DS . 'application' . DS . 'routes.xml'));
- Zend_Registry::set('router', $router);
Wie gerade angesprochen teilen wir nun über die setRouter-Methode unserem Zend_Controller mit, dass wir neben den Standard-Routen (/controller/action) auch noch unsere eigenen Routen berücksichtigen soll. Dazu holen wir uns aus der Registry unser Router-Objekt und rufen damit die setRouter-Methode auf.
- <?php
- $frontController->setRouter(Zend_Registry::get('router'));
Was jetzt noch fehlt ist die routes.xml
- <?xml version="1.0"?>
- <configdata>
- <authors route="authors">
- <defaults controller="users" action="list" />
- </authors>
- </configdata>
Die Route hat den Namen "authors" – wichtig für den Url-View-Helper – und die Route "authors". Außerdem fällt noch die defaults-Sektion ins Auge, die den Nutzen hat, dass beim Aufruf von /authors der Controller "users" und die Action "list" aufgerufen wird.
Der UsersController ist ziemlich unspektakulär. Er beinhaltet bis jetzt nur eine listAction, damit das Routing nicht ins leere führt, aber er sei vollständighalber auch noch erwähnt.
- <?php
- class UsersController extends Zend_Controller_Action {
- function listAction() {
- }
- }
Der Quelltext
Den vollständigen Quellcode der Anwendungen findet Ihr hier (inkl. Zend Framework). Es beinhaltet noch eine sehr rudimentäre boostrap-Datei, um die Anwendungen zu starten und ein paar Standardeinstellungen vorzunehmen, aber sie ist wirklich sehr sehr kurz gehalten und sollte definitiv noch angepasst werden. Für unsere Zwecke ist sie aber ausreichend.
Kurze Anmerkung
Natürlich lassen sich die Routen auch in einer ini-Datei ablegen. Dementsprechend leitet man dann nicht von Zend_Config_Xml sondern von Zend_Config_Ini ab. Es ist also jedem selbst überlassen, wo er seine eigenen Routen ablegt. Ein Beispiel gibt es dafür auch in der Zend Dokumentation zu sehen, die ich nur jedem wärmsten empfehlen kann.