cController

Aus CavoxCms Wiki

(Weitergeleitet von Controller)
Wechseln zu: Navigation, Suche

Ein Kontroller enthält #Views, #Commands und #Events. In den Views werden die HTML-Ausgaben vorbereitet, in den Commands werden Kommandos (z.B. aus Formularen) ausgewertet und das Resultat an einen View weitergeleitet.

Inhaltsverzeichnis

Commands

Commands sind ebenfalls in der Komponente vorzufinden. Sie führen einen bestimmten Befehl, der meist per Formular (POST) oder GET-Parameter aufgerufen wird (Parameter aus cRequest#Commandvariabeln). Dabei gibt die Funktion ein cResult (auch boolean, ob fehlerlos möglich) zurück, das an den aktuellen View weitergeleitet wird (siehe cView). Wird kein Result zurückgegeben wird ein leeres, erfolgreiches cResult erstellt. Im Parameter $params (Klasse cParameters) werden der Funktion die Übermittlungsdaten des Formulars übergeben. Ein cResult verwendet das gleiche Objekt; aus diesem Grund wird der $params Paramter selten verwendet, da die Auswertung durch die cResult-Klasse vorgenommen wird.

class cMymodule_Mymodel_Controller extends cController{
	...
	function cmd_cmd1(cParameters $params){
		...
		return new cResult(); 
	}
	...
}

Parameter lesen (POST/GET/Command-Parameter)

Commands können die Parameter im cParameters-Objekt im ersten Parameter des Funktionsaufrufs auslesen, oder direkt mit dem cResult-Objekt. Commands sollten die Klasse cRequest nicht verwenden, denn dadurch werden die Commands abhängig vom aktuellen Status der Anzeige. Übergeben sie die Parameter als Commandparameter.

$params->get($key, $type, $default)

Das Auslesen dieser Parameter ist auch mit

$this->getParameter($key, $type, $default); 

möglich. Achtung: In einer View-Funktion (siehe oben) greift dieser Aufruf auf andere Parameter zu.

Speichern

(Insert/Update)

class cMymodule_Mymodel_Controller extends cController{
	...
	function cmd_save(cParameters $params){
		$obj = cObject::load("model", $params);
		if($obj->save())
			$obj->setView("list");
		return $obj; 
	}
	...
}

Siehe auch Command:save

Views

Ein View ist eine Funktion in einer Komponenten-Klasse, die mit dem Prefix view_ beginnt. Diese Funktion gibt entweder eine cView, ein cTemplate oder einen String (mit HTML-Inhalten) zurück. Normalerweise wird ein cView oder eine davon abgeleitete Klasse (z.B. cFormView) zurückgegeben. Als Parameter wird der Funktion ein cResult-Objekt (wenn ein Command ausgeführt wurde) oder null übergeben. Dieser Parameter wird allerdings selten direkt in der View-Funktion ausgewertet. Der Name eines Views ist der Teil nach dem Prefix view_.

class cMymodule_Mymodel_Controller extends cController{
	...
	function view_myview($params, $result){
		$tpl = new cView($this);
		return $tpl;
	}
	...
}

In einer View-Funktion kann auch auf die View-ID und View-IDU zugegriffen werden:

$this->id;
$this->getIDU(type, default);

Sortierung wählen

Erstellt die Links für die Spaltensortierung. Wird benutzt, wenn mit dem View eine Liste dargestellt wird. Verwenden Sie dazu die Helper-Klasse cOrder.

Seiten blättern

Generiert die Nummerierung um die einzelnen Seiten zu blättern. Wird benutzt, wenn mit dem View eine Liste dargestellt wird. Für die Generierung dieser Daten wird die Klasse cPaging verwendet.

Parameter lesen (Komponentenaufruf)

Es können Komponentenparameter gelesen werden. (z.B. von [[mymodule:mycomponent key1=value1]])

$this->getParameter($key, $type, $default)

Achtung: Wird dieser Aufruf in einer Command-Funktion aufgerufen, wird auf einen anderen Typ von Parametern zugegriffen (siehe unten).

Events

Mit Events kann ein Modul auf Veränderungen in den Models eines anderen Modules reagieren. Ein Controller eines Modules kann sich bei einem Model anmelden und erhält beim Hinzufügen, Ändern und Löschen einen Event. Dazu werden in der Controller-Klasse Funktionen mit dem Prefix event_ erstellt, die dann aufgerufen werden.

Registrieren des Events:

function install(){
	cEvent::register("otherModule", "otherModel", "myModel", "myEvent");
}

Event myEvent im Controller des Models myModel

function event_myEvent(cEvent $event){
	...
}

Links

Persönliche Werkzeuge