Nous utilisons l'excellent module uRapidFlow d'Unirgy, mais nous sommes un peu contrariés. Lorsque vous exécutez l'un de leurs profils, ils appellent session_write_close
. Le problème avec cela est que cela signifie que si nous souhaitons exécuter un processus à partir d'un contrôleur adminhtml, nous ne pouvons pas définir de message flash de session pour informer l'utilisateur du succès ou des exceptions détectées.
Est-il possible de redémarrer la session une fois le processus terminé, afin d'ajouter un message de session?
Au départ, je ne savais pas s'il était possible de redémarrer une session en PHP, mais la preuve de concept PHP fonctionne:
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';
Je n'ai pas pu définir correctement un message flash sur la session adminhtml cependant. J'ai pensé que je pourrais être en mesure d'appeler quelque chose dans le sens de:
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Mais cela ne semble pas fonctionner.
Réponses:
Cela devrait fonctionner:
La session n'est pas perdue après
session_write_close()
, si vous voulez réécrire dans la session, vous devrez cependant la rouvrir. Preuve de concept:la source
session_write_close
).unset($_SESSION)
. Après celainit
, la session sera rechargée correctement.init
appel de méthode (bien dansstart
lequel est appelé parinit
). A part ça, ça devrait marcher.