t3n 6

Extension-Entwicklung neu durchdacht: TYPO3 und das MVC- Konzept

Seite 2 / 4

Theorie mit lib/div: Der Benutzer kommt auf die Webseite und fordert eine Action an. Wird keine Action übergeben, hat jeder Controller eine defaultAction, die aufgerufen wird. Der Controller wird instanziiert und erhält, wenn vorhanden, für ihn bestimmte GET/POST Parameter sowie die Konfiguration (Typoscript) des Plugins. Nun führt er mögliche Operationen im Model aus und informiert den View hierüber. Der View gibt dann die neue Ausgabe zurück und der Benutzer bekommt die Webseite angezeigt.

Theorie mit lib/div: Der Benutzer kommt auf die Webseite und fordert eine Action an. Wird keine Action übergeben, hat jeder Controller eine defaultAction, die aufgerufen wird. Der Controller wird instanziiert und erhält, wenn vorhanden, für ihn bestimmte GET/POST Parameter sowie die Konfiguration (Typoscript) des Plugins. Nun führt er mögliche Operationen im Model aus und informiert den View hierüber. Der View gibt dann die neue Ausgabe zurück und der Benutzer bekommt die Webseite angezeigt.

Das Model

Das Model weiß nichts vom View oder dem Controller, es stellt aber Operationen bereit, die vom Controller genutzt werden können und es stellt Zustandsinformation für den View bereit - zum Beispiel den aktuellen Datensatz des eingeloggten FE-User. Das Model repräsentiert die Zustände und Operationen der Anwendung, es enthält also die Programmlogik und den Datenzugriff, mit denen der Benutzer über den Controller agieren kann.

Beispiel: Login-Extension mit lib und div

Zum Erstellen einer Beispiel-TYPO3-Extension nach dem MVC-Konzept müssen zuerst im Extension Manager (EM) die Extensions „lib“ und „div“ installiert werden. Danach wird im Kickstarter eine neue Extension mit eventuell benötigten Tabellen angelegt. Hierbei sollte darauf geachtet werden, dass die Extension ohne Frontend-Plugins angelegt wird (FE-Plugins)! Als Extensionkey kommt hier beispielhaft „extkey“ zur Verwendung. Mit dem Speichern der Extension im Kickstarter werden nun automatisch im Ordner der neu erzeugten Extension die Ordner „controllers“, „models“, „static“, „views“ und „views/templates“ erstellt. Danach müssen die Dateien „class.tx_extkey_controllers_login.php“ (Listing 1) und „class.tx_extkey_models_feuser.php “ (Listing 2) erstellt werden:

PHPclass.tx_extkey_controllers_login.php

require_once(t3lib_extMgm::extPath('div').'class.tx_div.php');
tx_div::load('tx_lib_controller');
class tx_extkey_controllers_login extends tx_lib_controller{
var $extKey = 'extkey';
var $defaultAction = 'login';//wenn keine Action
function loginAction($out, $conf, $parameters){
	$view = tx_div::makeInstance('tx_lib_phpView');
	$view->setConfiguration($conf);//Plugin TS, Setup
	$view->setParameters($parameters);//GET,-POST Parameter
	$view->setTemplatePath($this->extPath(). 'views/templates/login/');
	$model = tx_div::makeInstance('tx_extkey_models_feuser');
	return $view->render($model->status());//Ausgabe
}

Listing 1

Der Beispiel Controller kommt in den Order „controllers“.Dieser gibt einfach nur je nach Loginstatus des Users ein View zurück.

PHPclass.tx_extkey_models_feuser.php

require_once(t3lib_extMgm::extPath('div').'class.tx_div.php');
tx_div::load('tx_lib_data');
class tx_extkey_models_feuser extends tx_lib_data{
	if($GLOBALS['TSFE']->fe_user->user['username'])) return 'logout';
	else return 'login',
	}
}

Listing 2

Alle Modelle sind im Ordner „models“ azulegen. Hier, der Kürze wegen, greifen wir auf die TSFE zurück, um den Loginstatus des Users zu erhalten.

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung