CakePHP, kurz Cake, ist ein in PHP geschriebenes quelloffenes Web-Framework für PHP 4 und 5. CakePHP ist angelehnt an Ruby on Rails und folgt ebenfalls dem Schema des Model View Controller (MVC). Eine weitere Gemeinsamkeit mit Ruby on Rails ist das zugrunde liegende Prinzip Don’t repeat yourself (DRY).
Quelle: Seite „CakePHP“. In: Wikipedia, Die freie Enzyklopädie
Erweiterungen
XsltView
Da ich bereits viel mit XSL gemacht habe, vermisste ich natürlich direkt die Möglichkeit, XML und XSL zu verwenden. Die direkte Ausgabe von HTML in Form von .ctp bzw. thtml Dateien ist zwar nett, aber auch nicht so ganz prickelnd. Nach einigem Googlen bin ich auf eine Lösung von RosSoft gestoßen, die quasi ein Xslt-View-Plugin ist. Leider war der Code von 2006 und veraltet. Sowohl die API von CakePHP hat sich mittlerweile geändert, als auch bessere Möglichkeiten in PHP. Außerdem gefiel es mir nicht, dass XSL-Templates auch gerendert wurden (wofür?).
Deshalb habe ich die Version 0.11 als Grundlage genommen und verbessert. Da ich das nicht im stillen Kämmerlein behalten will, “release” ich es als Version 0.2 unter der gleichen MIT-Lizenz.
Notes
- Same behavior than before: In der Anwendung habe ich nichts verändert, nur das Plugin selber arbeitet jetzt besser. Einzige Ausnahme: Das XML wird in ein Wrapper-XML-Tag namens “application” gefasst.
- Support for relative xsl:import: Das verwendete XSL kann andere XSLs über relative Pfadangaben importieren.
- PHP5 only, using DOMDocument & XSLTProcessor.
- Still todo, not implemented: LibXml-Fehler abfangen sowie einen Weg finden, den CakePHP-Stacktrace bzw. Debug-Code besser in die Ausgabe zu zwingen.
Install & Usage
- Die xslt.php kommt nach /app/views/xslt.php
- Im jeweiligen Controller (entweder für den ganzen Controller, oder in der Action) muss man angeben, dass man statt dem normalen jetzt ein Xslt verwenden möchte. Dies geschieht mit $this->view = ‘Xslt’;
- XML- man hat die Wahl: String bauen oder Template nutzen
- XML-String: der XML-String wird in der Action mit $this->set(‘xml’, $xmlstring); ablegt.
- XML-Template: Ähnlich einem “normalen” action.ctp-Template verwendet man ein action.xml-Template (Speicherort: app/views/controller_name/action.xml). Dort wird XML generiert; man hat Zugriff auf die Helper, auf Variablen, usw.
- XSL – man hat die Wahl: String bauen oder File nutzen
- XSL-String: Wie oben bei XML, nur mit $this->set(‘xsl’, $xslstring); die Möglichkeit ist überhaupt nicht zu empfehlen und nur aus historischen Version-0.11 implementiert.
- XSL-Stylesheet: Das Stylesheet, welches verwendet wird, wird unter app/views/controller_name/action.xsl ablegt.
Da eine Anwendung oft aus wiederkehrenden Elementen besteht, empfehle ich das nutzen einer globalen Haupt-XSL – beispielsweise /app/views/main.xsl.
Sagen wir als Beispiel, das die Action “index” für den Controller test keinen zusätzliche Regeln benötigt, wäre es nur eine “leere” XSL-Datei:
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” xmlns:html=”http://www.w3.org/1999/xhtml” xmlns=”http://www.w3.org/1999/xhtml” exclude-result-prefixes=”html”>
<xsl:import href=”../main.xsl” />
</xsl:stylesheet>