Erweiterte Verwendung von Zend_LayoutZend_Layout hat eine Vielzahl an Verwendungsmöglichkeiten für den fortgeschrittenen Entwickler der es für seine unterschiedlichen View Implementationen, Dateisystem Layouts, und anderes adaptieren will. Die Hauptpunkte der Erweiterung sind:
Eigene View ObjekteZend_Layout erlaubt es jede Klasse für die Darstellung der Layout Skripte zu verwenden die Zend_View_Interface implementiert oder Zend_View_Abstract erweitert. Es muß einfach das eigene View Objekt als Parameter dem Konstruktor/ startMvc() übergeben werden, oder es mit der setView() Zugriffsmethode gesetzt werden:
Eigene Front Controller PluginsWenn Zend_Layout mit den MVC Komponenten verwendet wird, registriert es ein Front Controller Plugin dass das Layout als letzte Aktion darstellt bevor die Bearbeitungsschleife beendet wird. In den meisten Fällen, wird das Standardplugin ausreichen, aber sollte es gewünscht sein ein eigenes zu schreiben, kann der Name der Pluginklasse die geladen werden soll durch die Übergabe der pluginClass Option an die startMvc() Methode spezifiziert werden. Jede Plugin Klasse die für diesen Zweck geschrieben wird, muß Zend_Controller_Plugin_Abstract erweitern, und sollte eine Instanz eines Layout Objektes als Instanz für den Konstruktor akzeptieren. Andernfalls sind die Details der Implementation in eigenen Händen. Die Standardmäßig verwendete Plugin Klasse ist Zend_Layout_Controller_Plugin_Layout. Eigene Action HelferWenn Zend_Layout mit den MVC Komponenten verwendet wird, registriert es einen Action Controller Helfer mit dem Helfer Broker. Der Standardhelfer, Zend_Layout_Controller_Action_Helper_Layout arbeitet als dummer Proxy zur Layout Objekt Instanz selbst, und sollte für die meisten Zwecke ausreichend sein. Sollte es gewünscht sein eigene Funktionalitäten zu schreiben, kann einfach eine Action Helfer Klasse geschrieben werden die Zend_Controller_Action_Helper_Abstract erweitert und den Klassennamen als helperClass Option an die startMvc() Methode übergeben werden. Details der Implementiert oblieben jedem selbst. Auflösung eigener Layout Skript Pfade: Verwenden der BeugungZend_Layout verwendet Zend_Filter_Inflector um eine Filterkette zu erstellen für die Übersetzung eines Layout Namens zu einem Layout Skript Pfad. Standardmäßig verwendet es die 'Word_CamelCaseToDash' Regeln gefolgt von 'StringToLower' und dem Anhang 'phtml' um den Namen in einen Pfad zu transformieren. Einige Beispiele:
Es gibt drei Optionen für die Änderung der Beugung: Änderung des Beuzungszieles und/oder des View Suffix über Zend_Layout Zugriffsmethoden, änderung der Beugungsregeln und des Ziels der Beugung die mit der Zend_Layout Instanz gekoppelt ist, oder Erstellung einer eigenen Beugungsinstanz und dessen Übergabe an Zend_Layout::setInflector(). Example #1 Verwenden von Zend_Layout Zugriffsmethoden zur Änderung der Beugung Der standardmäßige Zend_Layout Beugungsmechanismus verwendet statische Referenzen für das Ziel und View Skript Suffix, und besitzt Zugriffsmethoden für das setzen dieser Werte.
Example #2 Direkte Änderung der Zend_Layout Beugung Beugung hat ein Ziel und ein oder mehrere Regeln. Das Standardziel das von Zend_Layout verwendet wird ist: ':script.:suffix'; ':script' wird als registrierter Layoutname übergeben, während ':suffix' eine statische Regel der Beugung ist. Angenommen man will dass das Layout Skript mit der Endung 'html' endet, und es ist gewünscht das MixedCase und camelCased Wörter mit Unterstrichen statt Bindestrichen getrennt werden und der Name nicht kleingeschrieben wird. Zusätzlich ist es gewünscht in einem 'layouts' Unterverzeichnis nach den Skripten nachzuschauen.
Example #3 Eigene Beugung In den meisten Fällen ist es ausreichend den bestehenden Beugungsmechanismus zu verändern. Trotzdem kann man eine Beugung haben die in verschiedenen Orten verwendet werden soll, mit unterschiedlichen Objekten von unterschiedlichen Typen. Zend_Layout unterstützt das.
|