Pregunta

utilizar el excelente módulo uRapidFlow por Unirgy, pero tienen topó con un poco de una molestia. Cuando se ejecuta una de sus perfiles, que llaman session_write_close. El problema con esto es que significa que si deseamos ejecutar un proceso de un controlador adminhtml no podemos establecer un mensaje de sesión flash para informar al usuario sobre el éxito o excepciones atrapados.

¿Es posible reiniciar la sesión después de que el proceso se haya completado, con el fin de añadir un mensaje de sesión?

Yo al principio no estaba segura de si era posible reiniciar una sesión en PHP, pero la prueba de concepto PHP funciona:

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';

No he podido configurar correctamente un mensaje flash en la sesión adminhtml sin embargo. Pensé que podría ser capaz de llamar a algo a lo largo de las líneas de:

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

Sin embargo, esto no parece funcionar.

¿Fue útil?

Solución

This should work:

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

The session isn't lost after session_write_close(), if you want to write to the session again you would have to reopen it though. Proof of 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';
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top