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:
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.
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.




![TYPO3: 10 Jahre in 60 Sekunden zusammengefasst [Video]](http://t3n.de/uploads/t3n-news-post-361575_typo3_medium.jpg)


2 Antworten
von TYPOP3 Extension Development von Dmitry… 01.05.2009 (18:22Uhr) 1.
[...] wurde (man möge mir verzeihen, wenn es doch so war). Übrigens wurde das wichtige Thema MVC leider überhaupt nicht behandelt und auch die Vorteile von PHP5 im Vergleich zur Vorgängerversion [...]
von TYPO3camp Munich – Einführung in… 10.10.2009 (13:26Uhr) 2.
[...] http://t3n.de/magazin/typo3-mvc-konzept-extension-entwicklung-neu-durchdacht-219750/ [...]