[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