Extbase in TypoScript nutzen: die userFunc

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

#TypoScript 
# Snippet steht im Setup des Templates
# oder im Extensionsetup

lib.meinName = COA_INT
lib.meinName {
    10 = USER
    10 {
         userFunc     = tx_extbase_core_bootstrap->run
         extensioName = My_poor_extension_entspricht_verzeichnis_ordner
         pluginName   = MyPlugin_Pi1_whatever
         controller   = MyControllername_ohne_Controller
         action       = index_oder_andere_action
    }


# Die Angabe von switchableControllerActions
# ist überflüssig, mit controller und action ist
# dies eindeutig definiert!
#
# Am Ende der ControllerAction reicht ein return $meineDaten;
# $meine Daten sind dann im Objekt lib.meinName verfügbar
# oder ein View der dann gerendert wird.

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



Empfehlenswerte Lektüre:

Designing with Web Standards

Die Webseite "A List Apart" wird vielen bekannt sein die sich intensiv mit Webtechnologien beschäftigen. In seinem Buch "Designing with Web Standards" schreibt der Macher der Seite Jeffrey Zeldman anahand von vielen Beispielen wie  und warum Standards richtig eingesetzt werden.

Weitere Artikel zu diesem Thema:

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.