Heute gibt es ein kleines How-To zum Thema Dwoo und Zend Framework.
Wie integriere ich die Dwoo Template Engine in eine Zend Framework-Applikation?
Voraussetzungen:
- Zend Framework 1.9.x oder 1.10.x
- Dwoo 1.1.x
- Lauffähige ZF-Anwendung mit Bootstrap-Klasse
Die Bootstrap-Klasse
Zunächst passen wir unsere Bootstrap-Klasse an und erstellen eine neue Methode (falls schon vorhanden, entsprechend modifizieren):
/** * Initializes the dwoo template adapter. * * @return Zend_Controller_Action_Helper_ViewRenderer */ protected function _initView() { // Dwoo liefert einen eigenen ZF-Adapter mit. $view = new Dwoo_Adapters_ZendFramework_View(); // Pfade für unsere Templates festlegen. // Achtung: Das compiled-Verzeichnis sollte leer sein und das template-Verzeichnis beinhaltet im besten Fall noch ein "scripts"-Verzeichnis $view->setCompileDir(APPLICATION_PATH.'/templates/compiled'); $view->setScriptPath(APPLICATION_PATH.'/templates/'); $viewRenderer->setViewBasePathSpec(APPLICATION_PATH.'/templates'); // Noch ein paar Konfigurationsparameter... $view->setCacheLifetime(0); $view->setCharset('UTF-8'); $viewRenderer->setViewSuffix('html'); // Zeile auskommentieren, falls ihr kein jQuery nutzt. $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); // Jetzt noch einen neuen View-Renderer instanzieren und den Dwoo-Adapter übergeben. $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); // Hier sollte in jedem Fall der View-Renderer zurückgegeben werden. return $viewRenderer; } |
Wichtig dabei ist, dass ein entsprechender Autoloader existiert, der die verwendeten Klassen lädt, oder es müssen alle Dateien einzeln mit require_once eingebunden werden.
Ich empfehle Dwoo in das selbe Verzeichnis wie das ZF abzulegen, ähnlich dem folgendem Schema:
/lib/Zend/…..
/lib/Dwoo/…..
/lib/Dwoo.php
„lib“ kann natürlich auch library heißen oder includes.
View Helper
Der von Dwoo mitgelieferte View-Adapter hat die Fähigkeit, die View-Helper aus dem Zend-Framework aufzurufen.
{$welt = 'Welt'} <strong>{translate('Hallo %s!', $welt)}</strong> <ul> {foreach $irgendeinObjekt->getItems() item} <li>{$item->getName()} <img src="{baseUrl('/images/')}{$item->getImage()}"/></li> {/foreach} </ul> |
{translate(‚Hallo Welt!‘)} wird automatisch umgewandelt in translate(‚Hallo %s!‘, $this->welt) ?>.
Das Zuweisen von Variablen funktioniert im Übrigen genau wie ohne Dwoo mit $this->view->zuweisung = ‚text‘ im Controller. Aufgerufen wird die Zuweisung dann mit $zuweisung im Template.
Zuletzt sei noch gesagt, dass auch das Layout über Dwoo läuft. Es können also alle Funktionen von Dwoo auch in den Layout-Dateien verwendet werden.
Ich hoffe ich konnte mit diesem Artikel ein wenig Licht ins Dunkel bringen, was die Integration von Dwoo in das Zend Framework angeht.
Ein Kommentar zu “Zend Framework: Dwoo Template Engine”