Frontendsessions ab TYPO3 11 nutzen
Ich zeige dir wie du Frontend Sessions so nutzen kannst, wie in den vorherigen TYPO3 Versionen mit nur 2 Methoden.
Das Arbeiten mit Sessions in TYPO3 im Frontend war lange Zeit sehr einfach über die TSFE Eigenschaft: fe_user möglich.
Damals reichten 3 Methoden aus, um Daten in die Session zu schreiben und zu lesen.
Frontend Sessions in TYPO3 4.5 bis 10
Daten in die Session schreiben
$GLOBALS['TSFE']->fe_user->getKey('ses', $data);
$GLOBALS['TSFE']->storeSessionData();
Daten aus der Session lesen
$GLOBALS['TSFE']->fe_user->setKey('ses', $key, $data);
Diese Umsetzung ist ab TYPO3 11 nicht mehr möglich.
Jedoch kannst du auf sehr ähnliche Weise ab TYPO3 11 mit den Frontend-Sessions arbeiten. Wir schreiben uns dafür 2 Hilfsmethoden, die du in jeder Klasse so einbinden kannst.
Daten in die Session schreiben
/**
* Save data to frontend user session
* @param string $key
* @param mixed $value
* @param ServerRequestInterface $request
* @param void
*/
public static function saveToSession($key, $value, ServerRequestInterface $request = null) {
$request = $request ? $request : $GLOBALS['TYPO3_REQUEST'];
$frontendUser = $request->getAttribute('frontend.user');
$frontendUser->setKey('ses', $key, $value);
$frontendUser->storeSessionData();
}
Daten aus der Session lesen
/**
* Load data from frontend user session
* @param string $key
* @param ServerRequestInterface $request
* @param mixed
*/
public static function loadFromSession($key, ServerRequestInterface $request = null) {
$request = $request ? $request : $GLOBALS['TYPO3_REQUEST'];
$frontendUser = $request->getAttribute('frontend.user');
return $frontendUser->getKey('ses', $key);
}
Wir benötigen für den Zugriff aus den Frontendbenutzer bzw. die Hilfsklasse für die Frontendbenutzerauthentifizierung den aktuellen TYPO3 Request. In einem ActionController erhälst du diesen ganz einfach über die Klasseneigenschaft:
saveToSession($key, $value, $this->request);
Für andere Fälle wo du nicht so einfach auf den aktuellen Request kommst, kannst du mit meinen obigen Hilfsfunktionen diesen Parameter einfach leer lassen. Die Hilfsfunktion nutzt als Fallback die $GLOBALS.
Fazit
Du siehst, das Arbeiten mit den Frontendsession ist in TYPO3 11 und höher, fast genauso einfach, wie es vorher war. Leider gibt es dazu sehr wenig bis keine Information im Internet.
Ich hoffe, dieser kurze Artikel hat dir weitergeholfen.
Du findest zu diesem Thema auch einen YouTube Video auf dem T3 Campus. Das Video wird am 07.07.2023 um 20 Uhr veröffentlicht.