Question

Nous utilisons l'excellent module uRapidFlow par Unirgy, mais ont rencontré un peu d'une gêne. Lorsque vous exécutez un de leurs profils, ils appellent session_write_close. Le problème est que cela signifie que si l'on veut exécuter un processus à partir d'un contrôleur de adminhtml nous ne pouvons pas mettre un message flash de session pour informer l'utilisateur de la réussite ou exceptions pris.

Est-il possible de relancer la session après le processus est terminé, afin d'ajouter un message de session?

Je ne sais pas au départ était 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 été en mesure de régler correctement un message flash sur la session adminhtml cependant. Je pensais que je pourrais être en mesure d'appeler quelque chose le long des lignes de:

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

Mais cela ne semble pas fonctionner.

Était-ce utile?

La solution

Cela devrait fonctionner:

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

La session n'est pas perdu après session_write_close(), si vous voulez écrire à la session à nouveau, vous devrez rouvrir cependant. Preuve de concept:

<?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';
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top