Wie bereits erwähnt, nimmt der Front-Controller des Zend Frameworks alle eingehenden HTTP-Requests entgegen. Um zu gewährleisten, dass das möglich ist, müssen alle Requests auf die Datei „index.php“ gelenkt werden. Hierzu wird URL-Rewriting verwendet. Sie benötigen also einen Webserver, der eine entsprechende Funktionalität bietet. Für den Apache-Webserver kann folgende mod_rewrite-Regel verwendet werden, um den gewünschten Effekt zu erreichen:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/
Listing 1
Dadurch werden alle Requests auf nicht existente Dateien auf „index.php“ umgelenkt. So können Sie sichergehen, dass der Front-Controller nicht auch Requests auf Bilder, CSS-Files oder Ähnliches anwendet. Falls Sie nicht den Apache einsetzen, sollten Sie in der Dokumentation des Zend Frameworks [5] nachschlagen. Mit hoher Wahrscheinlichkeit finden Sie auch die passende Rewriting-Konfiguration für Ihren Webserver.
Nachdem die Verzeichnisstruktur steht und das Rewriting konfiguriert ist, kommen wir zur „index.php“. Wie schon angesprochen, werden alle Requests durch diese Datei geroutet. Hier wird der Front-Controller erzeugt, der für das Dispatching des Request verantwortlich ist. Daher bezeichnet man diese Datei auch als Bootstrapping-Datei. Das zugehörige Code-Listing zeigt, dass zuerst das Verzeichnis „library“ per „ini_set()“ zum Include-Pfad hinzugefügt wird. Dann werden die Datei mit der Klasse des Front-Controllers geladen und die statische Methode „run()“ aufgerufen, um die Request-Abarbeitung anzustoßen. Der Methode wird als Parameter das Verzeichnis der Action-Controller übergeben. Jetzt identifiziert der Front-Controller auf Basis der aufgerufenen URL den Action-Controller, der für die Verarbeitung des Request zuständig ist und überlässt diesem die fachliche Abarbeitung.
<?php
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '../library');
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../application/controllers'); ?>
Listing 2
Damit das funktioniert, müssen Sie den „IndexController“ zunächst einmal erstellen. Dazu legen Sie im Verzeichnis „applications/controllers“ die Datei „IndexController.php“ an. Deren Inhalt finden Sie im entsprechenden Code-Listing. Die Klasse erbt von „Zend_Controller_Action“, die bereits die Basisfunktionalität für alle Action-Controller implementiert. Die einzige Methode, die erstellt werden muss, ist „indexAction()“. Vorerst reicht hier ein leerer Methodenrumpf.








Eine Antwort
von Introductory article on the Zend Framewo… 02.08.2009 (10:23Uhr) 1.
[...] article is also available online. Enjoy your read (but take care, it’s only available in [...]