Extbase in TypoScript nutzen 

01.01.1970 34

Über TypoScript userFunc können schnell und einfach Extbase plugins eingebunden werden. Dennoch, jede Instanz verlangsamt das System und es sollte im Einzelfall abgewogen werden, ob nicht das gleiche Resultat mit einer reinen TypoScript Abfrage möglich ist. Mit der Anbindung von Extbase an TypoScript über die userFunc stehen einem alle Möglichkeiten einer Controller Action zur Verfügung. Beispiele aus meiner Arbeit sind unter anderem Spezialmenüs die aus Extensiondaten im Extbase Controller erzeugt werden und über Typoscript an eine HMENU angehangen werden. Aktuell benötigte ich Daten aus einer Extension für ein Powermail Formular, das ja Feldwerte aus TypoScript unterstützt. (Das Powermail diese in der aktuellen Version nicht überträgt, ist ein anderes Thema das ich quick-und-dirty mittels jQuery gelöst habe.) So verlockend und einfach das Thema auch ist, wie alles kann auch dieses überstrapaziert werden. Aus meiner Sicht kann ich nur empfehlen einfache Tabellenabfragen direkt mit TypoScript zu lösen, jede Extbase Anfrage schluckt eben auch wertvolle Serverressourcen. Vom Ablauf her passiert folgendes: 1. Ich definiere in TypoScript ein lib.meinName Objekt COA_INT und rufe meinen Extbase Extension/Controller Action auf. 2. In der ControllerAction kann ich ganz normal meinen Code innerhalb der Extension programmieren und gebe das Ergebnis mit return zurück. 3. Das lib.meinName Objekt enthält jetzt mein Controllerergebnis und kann überall eingebunden werden. Tipp: Das TypoScript kann durchaus auch im ExtensionSetup stehen!
Ihr könnt natürlich auch temp anstelle von lib nehmen.
Hier der Code:

ERROR: Content Element with uid "165" and type "t3devtemplate_code" has no rendering definition!

Mit namespaces

Hier ändert sich der Extbase bootstrap Aufruf, zusätzlich muss der Vendor angegeben werden. In einer 6.2 Installation lief das auch erst, nachdem ich die Flexibel Controller Actions angegeben hatte, auch wenn ich der Meinung bin das dises nicht erforderlich sind ...
lib.mylib = COA_INT
lib.myLib.10 = USER
lib.myLib.10 {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    pluginName = myplugin
    extensionName = myextension
    vendorName = MyVendorName
    controller = mycontroller
    action = myaction_withoutAction
    switchableControllerActions {
        myController {
             1 = myaction_withoutAction
        }
    }
    settings =< plugin.tx_myplugin.settings
    persistence = 16
    view =< plugin.tx_myplugin.view
}