Zum Inhalt springen

Andere Extension in eID-Prozess nutzen

Erstellt am 17. Januar 2013 · 2 Antworten · letzte Antwort am 20. Januar 2013

Tags: PHP, JavaScript & AJAX, Frage

Tek ·

Hallo!

Ich bin noch ein ziemlicher Neuling in der Extension-Entwicklung und bin jetzt auf ein Problem gestoßen, für das ich einfach keine Lösung finde.
Für meine Extension nutze ich als Template-Engine Smarty, das mittels der Typo3-Erweiterung "smarty" eingebunden ist. Bei der "normalen" Entwicklung läuft das auch wunderbar, wenn ich nun aber versuche innerhalb eines eID-Aufrufs mit dieser Smarty-Erweiterung eine Ausgabe erstellen zu lassen und diese per echo zurückgebe, ist das Ergebnis immer leer. Dass das Problem definitiv an der Kombination aus eID + Smarty-Erweiterung liegt, habe ich bereits getestet (Test-echos in der PHP-Datei werden zurückgegeben; Seite lässt sich durch nicht-eID-Aufruf normal anzeigen).
Woran liegt das?
Kann es sein, dass vorher noch irgendwelche Funktionen/Klassen/Variable geladen/initialisiert werden müssen, die im eID-Prozess wegfallen (z.B. muss um auf den FE-User in einem eID-Prozess zugreifen zu können auch vorher erst einiges erstellt/geladen werden, was sonst nicht nötig ist)?

Ich würde mich sehr über eure Hilfe freuen! Vielen Dank! 🙂

Julian.​Hofmann ·

Hallo.

Deine Vermutung dürfte passen. Für den eID-Mechanismus wird nur ein minimales TYPO3 instanziiert. Zum einen erreicht man damit kürzere Antwortzeiten (und auch geringere Last am Server), zum anderen ist vieles ja auch gar nicht nötig. Wozu sollte z.B. ein komplettes Template-Parsing stattfinden? Oft wird der FE-User nicht gebraucht (daher explizit aufzurufen, wenn nötig)? ...

Wenn ich das auf die Schnelle richtig gesehen habe, erfolgt die Grundkonfiguration von EXT:smarty auf TS-Basis. Und diese Einstellungen werden der Extension via eID vermutlich fehlen, weil eben kein TS-Parsing stattfindet. Damit fehlen dann Smarty die Cache-Dirs usw....

Viele Grüße
Julian

aemka ·

EXT:smarty braucht ein instanziiertes $GLOBALS['TSFE']. Das fehlt bei eid. D.h. du arbeitest stattdessen mit pagetype ajax oder einfach mit reinem js, wo du für Ajax-Funktionalitäten über reine DOM-Manipulation und Seiten-Abrufe mit weiteren Daten im Hintergrund per xmlhttprequest machst.