[TYPO3-german] AJAX im Plugin mit eID - Zugriff auf Session
Dr. Dieter Porth
web37p2 at web59550.greatnet-hosting.de
Thu Jun 15 19:20:04 CEST 2017
Hallo David,
Wenn du sowieso alles ($TSFE) brauchst, kannst du auch gleich einen
Aufruf über f:link.action auf die Action machen, die du per Extbase nach
üblicher Manie definierst. Per Ajax muss/sollte es dir doch ohnehin egal
sein, ob der Server nun eine Sekunde oder drei Sekunden braucht.
Der eId-Mechanismus ist nach meiner Ansicht nach nur sinnvoll, wenn du
das Bootstrap von TYPO3 vermeiden möchtest, weil deine Aktion wirklich
eigentlich TYPO3 nicht braucht. Ich habe auf den Weg bisher erst einmal
für eine kleinen Bild-Render-Service auf einer Webseite installiert, der
unabhängig von TYPO3-FAL für per JavaScript definierte Links in einem
Lazy-Loading-Kontext gecachte Bilder verfügbar machern sollte. In der
Regel ist der Weg über Extbase, abgesehen von ein paar Hügelgräbern,
einfach und schlank. Halte halte ich mich an Extbase und die normalen
TYPO3-Aktions.
Ansonsten rufe doch einfach mit xDebug TYPO3 auf und schaue, an welcher
Stelle $TSFE gebildet wird bzw. die von dir gewünschten Informationen
bereithält und extrahiere daraus die notwendigen Klassen und Methoden.
Mit besten Grüßen
Dieter
P.S. Grundgedanke bei TYPO3. Es gibt für alles schon mindestens eine
fertige Lösung, wobei diese meist eher suboptimal dokumentiert sind.
Interessant könnte für dich vielleicht auch folgender Teil aus der
Dokumentation sein
https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/FormProtection/Index.html
Wie ich vor kurzem beim Blick in den Code lernen konnte, funktioniert es
auch für eingeloggte Frontend-User.
Am 15.06.2017 um 12:49 schrieb David Brünner:
> Auf Stefans TYPO3 Seite
> (https://www.typo3lexikon.de/typo3-tutorials/ajax/eid-beispiele.html)
> wird beschrieben, wie man mit einer eID einen AJAX-Call im Plugin
> realisieren kann.
>
> Das funktioniert soweit gut.
> Aber leider habe ich dann innerhalb meiner PHP-Klasse die durch den
> AJAX-Call aufgerufen wird keinen Zugriff auf das $GLOBALS Array.
>
> Ich möchte nämlich in $GLOBALS['TSFE']->fe_user mit getKey() und
> setKey() die Session bearbeiten.
>
> Hat jemand eine Idee, wie das geht?
>
> Anbei mal der bisherige Code mit eID:
>
> ext_localconf.php:
> ..
> $GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include'] =
> ['KKSoftwareIndexController::storeSession' =>
> \KKSoftware\Kksession\Ajax\Session::class . '::storeSession'];
> ..
>
> Session.php:
> <?php
> namespace KKSoftware\Kksession\Ajax;
>
> use Psr\Http\Message\ResponseInterface;
> use Psr\Http\Message\ServerRequestInterface;
> use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
>
> class Session {
> public function storeSession(ServerRequestInterface $request,
> ResponseInterface $response) {
> $response->getBody()->write(json_encode($GLOBALS['TSFE']));
> return $response;
> }
> }
>
> session.js:
> $().ready(function() {
> $.ajax({
> url: 'index.php',
> method: 'POST',
> data: 'eID=KKSoftwareIndexController::storeSession',
> success: function(result) {
> console.log(result);
> }
> });
> });
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
--
----
Dr. Dieter Porth - Web-Entwickler
More information about the TYPO3-german
mailing list