Как добавить сообщение сеанса после вызова session_write_close?

magento.stackexchange https://magento.stackexchange.com/questions/221

  •  16-10-2019
  •  | 
  •  

Вопрос

Мы используем превосходный модуль 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');

Но это, похоже, не работает.

Это было полезно?

Решение

Это должно работать:

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';
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top