Usamos o excelente módulo uRapidFlow da Unirgy, mas tivemos um certo aborrecimento. Quando você executa um dos perfis deles, eles chamam session_write_close
. O problema é que, se desejamos executar um processo a partir de um controlador adminhtml, não podemos definir uma mensagem instantânea da sessão para informar o usuário sobre o sucesso ou exceções detectadas.
É possível reiniciar a sessão após a conclusão do processo, para adicionar uma mensagem de sessão?
Inicialmente, não tinha certeza se era possível reiniciar uma sessão em PHP, mas a prova de conceito do 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';
Não consegui definir corretamente uma mensagem em flash na sessão adminhtml. Eu pensei que poderia chamar algo ao longo das linhas de:
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Mas isso não parece funcionar.
Respostas:
Isso deve funcionar:
A sessão não será perdida depois
session_write_close()
, se você quiser gravar na sessão novamente, será necessário reabri-la. Prova de conceito:fonte
session_write_close
).unset($_SESSION)
. Depois de fazer issoinit
, recarregará a sessão corretamente.init
chamada do método (nastart
qual é chamado porinit
). Fora isso, deve funcionar.