it-swarm.com.de

getUserState funktioniert nicht im Benutzer-Plug-In onUserAfterSave, sondern in einer externen Datei und in einer benutzerdefinierten Komponente

Also habe ich dies in einem System-Plugin für Event onAfterInitialize -

$app = JFactory::getApplication();    
$referrer     = $app->input->getInt('ref');    
$app->setUserState('com_mycomponent.referrer', $referrer);

Und ich weiß, dass es die Variable setzt, weil in dieser Datei das funktioniert -

//get ref_uid from session variable    
$ref_uid = $app->getUserState('com_mycomponent.referrer', null);    
var_dump($ref_uid); die; 

Auch wenn ich getUseState zum Testen auf eine externe PHP-Datei lege, lautet es ebenfalls:

define( '_JEXEC', 1 );
define( '_VALID_MOS', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$app = JFactory::getApplication();

//get ref_uid from session variable
$ref_uid = $app->getUserState('com_mycomponent.referrer');

var_dump($ref_uid);die; 

Wenn ich jedoch denselben genauen getUserState-Aufruf in ein Benutzer-Plugin für onUserAfterSave stecke, kann es die Sitzungsvariable nicht lesen und gibt null zurück.

Ich bin sicher, dass der Code ausgelöst wird, weil ich beim Testen eine Ausgabe erhalte, dies wiederhole und das sterbe usw.

Hat jemand eine Idee, warum das nicht funktioniert?

Jemand auf stackexchange hatte ein ähnliches Problem, also habe ich ihren Vorschlag ausprobiert und diesen ohne Erfolg hinzugefügt -

$session = JFactory::getSession();
$session->set('registry',   new JRegistry('session'));

Erwähnenswert ist auch, dass getUserState in meiner benutzerdefinierten Komponente einwandfrei funktioniert, nur nicht in diesem onUserAfterSave-Plugin.

Jede Hilfe wäre sehr dankbar, mir fehlen alle Ideen!

2
omni

Die Variable wurde bei jedem Laden der Seite (onAfterInitialize) auf null gesetzt, wenn die get-Variable nicht vorhanden war. Behoben mit wenn nicht null;

     $app = JFactory::getApplication();
     $ref  = $app->input->getInt('ref');
     $session = JFactory::getSession();

     if(!is_null($ref)){

         $session->set('referrer', $ref);
     }

Die Sitzungsvariable wird nur gesetzt, wenn sie nicht null ist. Duh Omni!

1
omni

Es gibt kein Ereignis mit dem Namen onAfterUserSave - es wird am onUserAfterSave aufgerufen - nicht sicher, ob dies ein Tippfehler ist. Wenn es kein Tippfehler ist, habe ich keine Ahnung, wie ein nicht vorhandenes Ereignis ausgelöst wurde.

0
itoctopus