Actioncontroller
Das Dispatching des ZEND Framework basiert auf Actions. Für jede Funktionsgruppe (zum Beispiel die Verwaltung von Administratoren) wird ein ActionController angelegt. Für jede Action existiert wiederum eine Methode (zum Beispiel indexAction()). Das RedSpark Framework geht an dieser Stelle einen Schritt weiter, und zwar aus folgendem Grund: Actions die ein Formular enthalten, müssen in der Regel gespeichert werden. Man müsste dafür jeweils eine Action ("Formular zeigen", "Formular speichern") einfügen oder die Action selbst (z.B. per case Verteiler) unterteilen, um die Daten zu speichern.
Im RedSpark Framework gibt es für jede Action nicht nur eine Methode, sondern eine komplette Klasse. Die Action-Klasse ist in "subactions" unterteilt. Als Standard wird die Methode defaultSubaction() aufgerufen, meist um das Formular zu erzeugen. Die Speicherung der Daten erfolgt in der saveSubaction() welche bei Erfolg eine Weiterleitung durchführt und im Fehlerfall die fehlerhaften Felder registriert und $this->defaultSubaction() aufruft, um das Formular erneut auszugeben.
Die Kapselung des kompletten Workflow in einer Klasse bietet zudem weitere Vorteile. Eventuell nötige Hilfsmethoden, sowie Attribute wie "Weiterleitungsziel", etc., die ausschließlich in der jeweiligen Action benötigt werden, lassen sich als private Methoden realisieren und damit in der Action kapseln.
Im RedSpark Framework gibt es für jede Action nicht nur eine Methode, sondern eine komplette Klasse. Die Action-Klasse ist in "subactions" unterteilt. Als Standard wird die Methode defaultSubaction() aufgerufen, meist um das Formular zu erzeugen. Die Speicherung der Daten erfolgt in der saveSubaction() welche bei Erfolg eine Weiterleitung durchführt und im Fehlerfall die fehlerhaften Felder registriert und $this->defaultSubaction() aufruft, um das Formular erneut auszugeben.
Die Kapselung des kompletten Workflow in einer Klasse bietet zudem weitere Vorteile. Eventuell nötige Hilfsmethoden, sowie Attribute wie "Weiterleitungsziel", etc., die ausschließlich in der jeweiligen Action benötigt werden, lassen sich als private Methoden realisieren und damit in der Action kapseln.
<?php
/**
* Cache konfigurieren
*
* @param Redspark_Cache_Entity_Action $entity
*/
protected function init() {
$this->_uid = Redspark_Session::$uid;
if (!isset($_SESSION['treemenu_open_status'])) {
$_SESSION['treemenu_open_status'] = Array();
$_SESSION['treemenu_open_status']['Cms'] = TRUE;
}
$this->_aid = Redspark_Session::$aid;
}
?>