Wie wird eine Sitzungsnachricht hinzugefügt, nachdem Session_Write_Close aufgerufen wurde?

magento.stackexchange https://magento.stackexchange.com/questions/221

  •  16-10-2019
  •  | 
  •  

Frage

Wir verwenden das hervorragende Urapidflow -Modul von Unirgy, sind aber ein bisschen ärgerlich. Wenn Sie eines ihrer Profile ausführen, rufen sie an session_write_close. Das Problem dabei ist, dass es bedeutet, 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 den Erfolg zu informieren oder Ausnahmen zu erfassen.

Ist es möglich, die Sitzung nach Abschluss des Vorgangs neu zu starten, um eine Sitzungsnachricht hinzuzufügen?

Ich war mir zunächst 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 nicht korrekt eine Flash -Nachricht in der adminHtml -Sitzung festlegen. Ich dachte, ich könnte in der Lage sein, etwas nach wie vor zu rufen:

Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

Aber das scheint nicht zu funktionieren.

War es hilfreich?

Lösung

Das sollte funktionieren:

unset($_SESSION);
Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

Die Sitzung ist danach nicht verloren session_write_close(), Wenn Sie erneut in die Sitzung schreiben möchten, müssten Sie sie jedoch wieder eröffnen. Konzeptioneller Beweiß:

<?php
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();
var_dump($_SESSION);
//// set a value to see if it takes
$_SESSION['test'] = 'foo';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top