Как добавить сообщение сеанса после вызова закрытия записи сеанса?
Мы используем отличный модуль uRapidFlow от Unirgy, но столкнулись с небольшим раздражением. Когда вы запускаете один из их профилей, они вызывают session_write_close
. Проблема в том, что это означает, что если мы хотим запустить процесс с контроллера adminhtml, мы не можем установить флэш-сообщение сеанса, чтобы информировать пользователя об успешном выполнении или обнаруженных исключениях.
Можно ли перезапустить сеанс после завершения процесса, чтобы добавить сообщение о сеансе?
Я изначально не был уверен, можно ли перезапустить сеанс на PHP, но доказательство концепции 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();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';
Однако мне не удалось правильно установить флэш-сообщение в сеансе adminhtml. Я подумал, что, возможно, смогу назвать что-то вроде:
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Но, похоже, это не работает.
1 answers
Это должно сработать:
unset($_SESSION);
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Сеанс не теряется после session_write_close()
, однако, если вы хотите снова написать в сеанс, вам придется его снова открыть. Доказательство концепции:
<?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';