session_write_closeが呼び出された後、セッションメッセージをどのように追加しますか?

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

  •  16-10-2019
  •  | 
  •  

質問

Unirgyによって優れたurapidflowモジュールを使用していますが、少し迷惑になりました。あなたが彼らのプロファイルの1つを実行するとき、彼らは呼びます session_write_close. 。これに関する問題は、AdminHTMLコントローラーからプロセスを実行したい場合、セッションフラッシュメッセージを設定してユーザーに成功またはキャッチされた例外を通知できないことを意味します。

セッションメッセージを追加するために、プロセスが完了した後にセッションを再起動することは可能ですか?

私は当初、PHPでセッションを再起動することが可能かどうかはわかりませんでしたが、概念のPhot 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