Wir verwenden das exzellente uRapidFlow-Modul von Unirgy, sind aber etwas verärgert. Wenn Sie eines ihrer Profile ausführen, rufen sie an session_write_close
. Das Problem dabei ist, dass wir, wenn wir einen Prozess von einem Adminhtml-Controller ausführen möchten, keine Sitzungs-Flash-Nachricht festlegen können, um den Benutzer über Erfolg oder abgefangene Ausnahmen zu informieren.
Ist es möglich, die Sitzung nach Abschluss des Vorgangs neu zu starten, um eine Sitzungsnachricht hinzuzufügen?
Ich war mir anfangs nicht sicher, ob es möglich war, eine Sitzung in PHP neu zu starten, aber der Proof-of-Concept-PHP funktioniert:
session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';
// start running profile
session_write_close();
// after running profile
session_start();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';
Ich konnte jedoch keine Flash-Nachricht in der Adminhtml-Sitzung richtig einstellen. Ich dachte, ich könnte etwas in der Art von:
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Das scheint aber nicht zu funktionieren.
Antworten:
Das sollte funktionieren:
Die Sitzung geht danach nicht verloren
session_write_close()
. Wenn Sie erneut in die Sitzung schreiben möchten, müssen Sie sie jedoch erneut öffnen. Konzeptioneller Beweiß:quelle
session_write_close
).unset($_SESSION)
. Danachinit
wird die Sitzung korrekt neu geladen.init
Methodenaufrufs aufgerufen wird (instart
dem auch aufgerufen wird voninit
). Davon abgesehen sollte es funktionieren.