Entwicklung & Design

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

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!