[TYPO3-german] AJAX im Plugin mit eID - Zugriff auf Session

David Brünner david.bruenner at t-online.de
Sat Jun 17 23:11:22 CEST 2017


Sorry das ich euch nicht auf dem laufenden gehalten habe.

> ich benutze auch JSON via eID für eine eigene Suchmaschine, da mir das 
gesamte Framework zu langsam war. Auf die Usersession komme ich so:

aber das habe ich mittlerweile auch hinbekommen.

Aber das ganze ist so gedacht, dass ich zwei Buttons - größere und kleiner Schrift - habe.

Das ganze habe ich so gelöst:
?php
 
use TYPO3\CMS\Core\Utility\GeneralUtility;
 
$returnData = null;
$TSFE = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('TSFE');
if (!$TSFE) {
  /** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $TSFE */
  $TSFE = GeneralUtility::makeInstance(
    'TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController',
    $TYPO3_CONF_VARS,
    0,
    0
  );
  $TSFE->initFEuser();
  $returnData['TSFE'] = $TSFE;
}
 
$type = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('action');
switch ($type) {
  case 'lese':
    $returnData['value'] = $TSFE->fe_user->getKey('ses', 'test');
    break;
  case 'schreibe':
    $value = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('input');
    $TSFE->fe_user->setKey('ses', 'test', $value);
    break;
}
echo json_encode($returnData);

das JS:
var TSFE = null;
 
$().ready(function() {
  $('button').on('click', function() {
    var type = $(this).attr('id');
    var inputData = $('#testinput').val();
    $.ajax({
      url: 'index.php',
      method: 'POST',
      data: {
	'eID': 'KKSoftwareIndexController::storeSession',
	'input': inputData,
	'action': type,
	'TSFE': TSFE
      },
      success: function(result) {
        result = jQuery.parseJSON(result);
	TSFE = result.TSFE;
	if (type == 'lese') {
	  alert(result.value);
	}
      }
    });
  });
});

Beim 1.Klick funktionierts - FE-User wird dann initialisiert und dann an AJAX zurückgeliefert.
Beim 2. Klick bekommet der PHP Teil dann das Bereits initialisierte Objekt - aber leider nicht als
TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController sondern nur als Array ==> Das TSFE wird neu initialisiert und meine Sessiondaten sind somit wieder leer.

Und auch wenn das soweit funktionieren würde bin ich trotzdem sehr an der Lösung interessiert wieso mein Ajax mit der f:link.action-Methode nicht funktioniert.


More information about the TYPO3-german mailing list