Zend Framework 1.9.6 veröffentlicht
Seit wenigen Stunden steht die Version 1.9.6 des kostenlosen Zend Framework zum Download bereit. Das Release enthält mehr als 60 Bugfixes und kann auf der offiziellen Projektseite heruntergeladen werden.
Seit wenigen Stunden steht die Version 1.9.6 des kostenlosen Zend Framework zum Download bereit. Das Release enthält mehr als 60 Bugfixes und kann auf der offiziellen Projektseite heruntergeladen werden.
Wenn ein Projekt über einen geschlossenen Nutzer- oder Adminbereich verfügt, dann steht man immer wieder vor der Problematik, dass man den Login-Status des Besuchers auf vielen Unterseiten abfragen und ggf. auswerten muss. Bei großen Projekten kann das manchmal ziemlich mühselig werden, doch wenn das Projekt auf dem Zend Framework basiert, dann läßt sich so etwas mit Hilfe der Controller-Plugins sehr schnell umsetzen.
Zunächst benötigen wir innerhalb des Plugin’s die aktive Objekt-Instanz von Zend_Auth. Das unser Beispiel jedoch auch eine Rechteverwaltung auf Basis von Zend_Acl besitzt, lesen wir die dazu notwendige Objekt-Instanz gleich mal mit ein.
1 2 | $aclObject = Zend_Registry::get('Zend_Acl'); $authObject = Zend_Auth::getInstance(); |
Auch wenn durch die Einführung von Zend_Application der Initialisierungsprozess einer Anwendung erheblich beschleunigt wurde, so bleibt noch immer der Wehrmutstropfen, dass in der zentralen application.ini noch immer kein modulspezifisches Layout geladen werden kann, da der Dispatch Prozeß in der Bootstrap-Datei noch nicht gestartet wurde.
Was also tun, wenn wir z.B. für einen Adminbereich ein vollkommen neues LayoutScript benötigen? Genau vor dieser Frage stand ich heute schon den ganzen Tag und wenn das Zend Framework schon ziemlich weit verbreitet ist, waren mit Hilfe der Suchmaschinen nur wenige Informationen zu diesem Thema zu finden.
Aktuell sieht der Layout-Abschnitt meiner application.ini wie folgt aus:
1 2 | resources.layout.layout = "default" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" |
Zunächst hatte ich daran gedacht, das neue Layout in jedem Controller des Adminbereiches innerhalb der Methode init() zu setzen, doch das würde ja bedeuten, dass ich allen Controllern den gleichen Code hinterlegen muss und das wäre wohl ziemlich ineffektiv.
Die Lösung wäre also, denn Code automatisch bei jedem Aufruf des Admin-Moduls zu starten um so das LayoutScript zentral für alle abhängigen Controller zu setzen. Leider kommt man immer viel zu spät auf die Möglichkeit, den FrontController mit Hilfe von Plugins zu erweitern und so hat es auch bei mir eine ganze Weile gedauert, bis auf die folgende Lösung gekommen bin. mehr…