Teil 4: Serie: PHP-Frameworks Teil 7 - eZ Components
- Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 2: Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 3: Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 4: Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 5: Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 6: Serie: PHP-Frameworks Teil 7 - eZ Components
- Teil 7: Serie: PHP-Frameworks Teil 7 - eZ Components
Im einfachen Beispiel reicht es, den Aufruf des www-Verzeichnisses mit dem Standard-Controller frameworksController zu verbinden. Dort soll eine Methode list aufgerufen werden, die eine Liste mit Frameworks aus der Datenbank aufruft:...
Im einfachen Beispiel reicht es, den Aufruf des www-Verzeichnisses mit dem Standard-Controller frameworksController zu verbinden. Dort soll eine Methode list aufgerufen werden, die eine Liste mit Frameworks aus der Datenbank aufruft:
class frameworksRouter extends
ezcMvcRouter {
public function createRoutes() {
return array(
new ezcMvcRailsRoute('/', 'frame
worksController', 'list'),
);
}
}
Controller, View, Template
Das Herzstück ist der Controller. Er landet in der Datei lib/controllers/ frameworks.php. Für den Start fällt die Datenabfrage weg. Die Daten kommen aus einem einfachen Array. Die Methode in frameworksController heißt doList(). Sie erinnern sich an das Routing: Dort wurde list aufgerufen. Mit dem Zusatz do und großem Anfangsbuchstaben gelingt hier das automatische Matching:
class frameworksController extends
ezcMvcController {
private $frameworks = array('eZ
Components', 'Akelos', 'Zend Framework');
public function doList() {
$ret = new ezcMvcResult;
$ret->variables['frameworks'] =
$this->frameworks;
return $ret;
}
}
Die Methode doList() liefert ein ezcMvc Result-Objekt zurück. Dieses Objekt erhält eine Variable frameworks. Sie wiederum wird von den Mvc Tools an die View übergeben. Und die ist nun als Nächstes dran. Sie landet in views/root.php. Der Name ist hier - gemäß autoload.php - frei wählbar. Die View ist eine Klasse, die in der Methode createZones() die Einzelteile des Layouts in einem Array zusammenfügt:
class frameworksRootView extends
ezcMvcView {
function createZones($layout) {
$zones = array();
$zones[] = new ezcMvcTemplateView
Handler('menu', 'menu.ezt');
$zones[] = new ezcMvcPhpViewHandler(
'content', '../templates/frameworks_list.php');
$zones[] = new ezcMvcTemplateView
Handler('page_layout', 'layout.ezt');
return $zones;
}
}
Im vorliegenden Beispiel gibt es drei Zonen: das eigentliche Seitenlayout und ein Menü, beide als vorkompilierbare .ezt-Template-Dateien und ein von PHP behandelter Bestandteil im templates-Verzeichnis.
Die Template-Dateien sind sehr einfach aus HTML-Code aufgebaut und enthalten jeweils Platzhalter in einer einfachen Template-Sprache. Das Haupttemplate in templates/layout.ezt enthält die anderen beiden Bestandteile:
{use $menu, $content}<html><head><title>Liste mit Frameworks</title></head><body>
{raw $menu}<br/>
{raw $content}</body></html>
Das Menü wird testweise mit einem Link auf das Wurzelverzeichnis versehen:
{use $installRoot}<div id="menu"><a href="{$installRoot}/">Home</a></div>