[TYPO3-german] MVC-Application in TYPO3 einbinden/integrieren, eigene VIEWs

Daniela Waranie typo3-community at gmx.de
Mon May 4 16:47:23 CEST 2009


Hallo zusammen,

ich interessiere mich für das Thema MVC schon eine ganze Zeit und frage
mich, wie ich eine bestehende MVC-Application (Zend Framwork) in TYPO3
am besten integrieren kann.

Bei der Integration würde ich eine TYPO3-Extension erstellen die als
'Brücke' zwischen TYPO3 und der MVC-Application dient.

Diese Extension würde ich gerne ebenfalls als MVC anlegen.
In der Extension, welche ich mit dem kickstarter__mvc erzeugt wird,
würde ich lib/div als 'Framework/Libraries' verwenden, weil das bei
TYPO3 4.x relativ gut dokumentiert ist.

DER NORMALE ABLAUF:
Die Application, die auf dem Zend Framework basiert, ist es gewohnt
"direkt" aufgerufen zu werden. D.h., wenn ein User
http://www.domain.tld/modulename/controllername/actionname/key1/value1/key2/value2
aufruft, dann wird dieser Aufruf durch eine .htaccess-Datei auf den
Front-Controller umgeleitet, der dann den Controller (class:
controllername im Modul: modulename) instanziert und die Action
(Methode: actionnameAction) ausführt. Der Action Controller nutzt key1
und key2 (inkl. values) und steuert das Model und übergibt ggf. diese
keys an das Model. Mit den vom Model zurückgelieferten Daten wird dann
meistens ein View 'versorgt', welches dann diese Daten in ein
HTML-Template einbaut (ggf. unter Verwendung einer Template Engine).

TYPO3:
Bei TYPO3 wird auf Grund einer .htaccess-Datei ebenfalls 'jede' Anfrage
z.B.
http://www.domain.tld/modulename/controllername/actionname/key1/value1/key2/value2
nach http://www.domain.tld/index.php umgeleitet. Eine entsprechene
.htaccess-Regel für die MVC-App. kann also nicht mehr zusätzlich
definiert werden. Es müssen also alle Anfragen durch die TYPO3-index.php
geleitet werden. Jedoch ist bei TYPO3 der Teil
'/modulename/controllername/actionname/key1/value1/key2/value2'
ziemlich egal und ruft dann die 'root' Page auf. Der gleiche URL mit
'/?id=99' am Ende, also:
http://www.domain.tld/modulename/controllername/actionname/key1/value1/key2/value2/?id=99
sorgt für die Ausgabe der Page mit der ID 99.

ERSTES FAZIT:
Es sollte kein Problem sein, beides miteinander zu kombinieren.

1) Wie soll ich die MVC-Application aus meiner TYPO3-MVC-Extension
ansprechen? Soll ich im Ext.-Model den Front Controller der MVC-App
instanzieren oder gibt es bessere Ansätze?

2) Muss ich in $_GET, $_POST, $_COOKIE und $_SERVER irgend was setzen,
damit für die MVC-App. alles wie ein "Direktaufruf" aussieht, oder hat
TYPO3 hier nichts verändert?

3) Da ich von der MVC-App. kein 'full page'-HTML bekommen möchte müsste
ich neue VIEWs erstellen. Diese werde ich in meiner MVC-Extension
anlegen. Dann müsste ich dem MVC-App. Action Controller sagen, dass er
seine eigenen Views vergessen soll (neuer Parameter) und dass dieser die
Daten für die MVC-Ext. bereitstellen soll. Dass kann er in diesem
Szenario zwar nicht direkt selbst, weil ja der Front Controller noch
dazwischen hängt, müsste dieser von seinem Action Controller die Daten
zunächst holen / bekommen und diese dann an meine Ext. weitergeben /
bereitstellen. Alternative könnten die Daten auch außerhalb der Objekte
/ Klassen in einer globalen Variablen, der Session oder auch sonst wo
ablegen, wo das Model meiner Ext. drauf zugreifen kann. Was schlagt Ihr
mir vor?

Vielen Dank im Voraus.

Lieben Gruß
Daniela Waranie


More information about the TYPO3-german mailing list