Router in der Konfigurationsdatei definieren
In Zukunft möchte ich hier die Entwicklung der Restseite dokumentieren. Wie bereits erwähnt verwende ich das Zend Framework für alles, was nicht unter /blog/ erreichbar ist. Heute habe ich mich zum ersten Mal an eine Datenbankschnittstelle gewagt und eine kleine Seitenverwaltung geschrieben. Grundkenntnisse über das Framework setze ich hier voraus, wobei jeder mit mehr als Grundkenntnissen das Beschriebene wohl schon X mal implementiert hat.
Die statischen Seiten werden aus einer Tabelle gehohlt und sind unter der Url dirk-schumacher.net/seiten/<<PageName>> erreichbar. Nun gibt es im Zend Framework und auch in anderen Frameworks (z.B. Ruby on Rails) das Konzept der Router, mit denen man relativ beliebig Anfrage Muster auf bestimme Controller und Actions verteilen kann. In diesem Fall heißt der Contoller Page und die Action show.
In der Config Datei (in diesem Fall .ini) definiert man zunächst die Routingvorschrift:
routes.page.type = "Zend_Controller_Router_Route_Regex"
routes.page.route = "seiten/([a-z0-9]+)"
routes.page.defaults.controller = "page"
routes.page.defaults.action = "show"
routes.page.map.1 = "pagename"
Nun muss nur noch irgendwo in der Bootstrap Datei oder in einem Plugin der Router registriert werden:
$conf = Zend_Registry::getInstance()->configuration;
Zend_Controller_Front::getInstance()->getRouter()->addConfig($conf, "routes");
In der ShowAction kann bequem über $this->_getParam("pagename") auf den Seitennamen zugriffen werden. In meinem Fall wird er an das Model weitergegeben und dann überprüft, ob auch eine Seite unter diesem Namen existiert.
Vorteil der Definition der Routings in der Konfigurationsdatei liegt auf der Hand, man hat einen zentralen Ort der alle nötigen konfigurierbaren Elemente bzw. Literale enthällt. Beispiel ist zur Zeit das war das Impressum.
Nächstes Ziel ist eine GoogleSitemap für zunächst nur die "statischen" Seiten.