Zum Inhalt springen

Gibt es bei FLOW3 sowas wie ein Router?

Erstellt am 14. Januar 2011 · 5 Antworten · letzte Antwort am 20. Januar 2011

Tags: Frage

Kurtux ·

Hallo,

gibt es bei FLOW3 sowas wie ein Router?

Ich habe beim Verwenden des Timetrackbeispiels https://www.mittwald.de/extbase-dokumentation/ die Erscheinung, dass ich kein Projekt anlegen kann. Nach dem Drücken auf dem Submitbutton Save, siehe Bild unten,bekommt mein Apache den POST Request:

POST /index.php?id=2&type=1&tx_mittwaldtimetrack_pi1[action]=create&tx_mittwaldtimetrack_pi1[controller]=Project&cHash=b7e2ed51da5c31b560f078ea564f43c9 HTTP/1.1" 200

Habe im ProjectController.php
in die Actionmethode create einen error_log() Aufruf eingebaut: Die Actionmethode wird garnicht aufgerufen.

Hat jemand einen Tip, welche PHP-Datei den Request entgegennimmt (bei MVC eben der Router) und dann den entsprechenden Controller und Actionmethode weiterleitet?

Public Function createAction( Tx_MittwaldTimetrack_Domain_Model_Project $project, $assignments ) {
error_log(__CLASS__.'->'.__METHOD__.var_export($project).'|'.var_export($assignment));

Wolfram
---
Für das obige Problem verwendete Versionen:
PHP Version 5.2.10-pl0-gentoo
MySQL Server 5.0.70-log Gentoo Linux mysql-5.0.70-r1
typo3 4.4.6
extbase 1.2.1
fluid 1.2.1
mittwald_timetrack 1.1.0

Bild: wolframhubert.kilu.de/…/mittwaldtimetrack_project_create_no_saving.png

Kurtux ·

Ja den Router gibt es. Und zwar heißt der bei FLOW3 (Das MVC Framework des typo3 Universums) Dispatcher.

Hier ein Ausschnitt der Tracedatei, die ich beim Klick auf den Savebutton via xdebug anlegen lies:

4.4.6/typo3/sysext/extbase/Classes/Dispatcher.php:116
    0.3365   16510344                   -> tslib_cObj->getUserObjectType() /var/www/typo3_src-4.4.6/typo3/sysext/extbase/Classes/Dispatcher.php:117
    0.3365   16510368                   -> Tx_Extbase_MVC_Web_Request->setIsCached() /var/www/typo3_src-4.4.6/typo3/sysext/extbase/Classes/Dispatcher.php:117
    0.3365   16510428                   -> t3lib_div::makeInstance() /var/www/typo3_src-4.4.6/typo3/sysext/extbase/Classes/Dispatcher.php:119

In der Doku http://www.mittwald.de/fileadmin/pdf/extbase_fluid.pdf auf der Seite 153 steht der Dispatcher beschrieben.

Wolfram

Unbekannter Benutzer ·

Ihr vermischt hier zwei Dinge. FLOW3 ist ein neues PHP Framework entwickelt von den TYPO3 Entwicklern. Auf dem wird die Version 5 von TYPO3 basieren. Ihr benutzt aber beide ExtBase, was ein Backport von FLOW3 darstellt der als Framework in Version 4 funktioniert. Da sich aber einige Sachen so mit v4 nicht umsetzen lassen und auf der anderen Seite in v4 bestimmte Dinge vorgegeben sind, die FLOW3 so nicht kennt, unterscheiden sich beide durchaus. Daher ist es schon wichtig das bei Fragen zu trennen.

Kurtux ·

Hallo Kitsunet,

vielen Dank für Deinen Beitrag. Ich hatte Extbase so verstanden, dass diese Extension als Adapter zum Anpassen von FLOW3 an die Typo3 Version 4 Struktur fungiert.

Wie Du schreibst, enthält aber Typo3 Version 5 / Phoenix auch die Extbase.

So gesehen, ist meine Fragestellung falsch. Gibt es bei Extbase für Typo3v4 sowas wie einen Router? Wäre die richtige Frage gewesen.

Wolfram

Unbekannter Benutzer ·

Nein, ihr müsst Extbase und FLOW3 getrennt sehen! FLOW3 ist ein komplettes (eigenständiges) PHP Framework und hat so erstmal nichts mit TYPO3 zu tun. ExtBase portiert Teile des Codes und der Konzepte in eine v4 Extension, trotz vieler Gemeinsamkeiten gibt es auch viele Unterschiede. Die Entstehungsreihenfolge ist FLOW3 -> Extbase, d.h. Extbase wurde/wird aus FLOW3 heraus entwickelt.

Kurtux ·

Ich möchte für den Thread hier eine Zusammenfassung bringen:

Das in TYPO3 v5 / Phoenix verwendete FLOW3 benutzt das Konzept eines Routers und ist in der folgenden FLOW3 Doku zu finden:
http://flow3.typo3.org/fileadmin/Documentation/FLOW3/API/F3
/FLOW3/MVC/Web/Routing/class-Router.html

Das in >= TYPO3 v4.3 verwendete Extbase verwendet auch das Konzept eines Routers und ist in der folgenden TYPO3 Doku zu finden:
http://www.t3node.com/typo3api/trunk/d2/dfb/classTx__Extbase__Dispatcher.html

Mit dem Wissen, in welcher Datei der Router sich befindet, wird eine Fehlereingrenzung bei der Verarbeitung der Prozesskette URL->Request-Object->Controlleraufruf->... erleichtert.

Damit erkläre ich diesen Thread als gelöst.