web-dev-qa-db-ja.com

Magentoでセッションの設定を解除するにはどうすればよいですか?

Magentoカスタムモジュールでセッションを使用しています。以下は私のコードです

$session = Mage::getSingleton("core/session", array("name"=>"frontend"));

$session->setData("day_filter", 'weeks');
$session->setData("days", '5');          
$session->setData("next_delivery_date", '2012-05-12');

上記のコードは正常に機能していますが、すべての値を設定解除または破棄したいですか?すべての設定値を解除する方法を教えてください。

13
user1443655

Magentoでセッション変数の設定を解除する方法はいくつかあります。これらのほとんど(すべてではない)は_Varien_Object_で定義されているため、それを拡張するMagentoのすべてのオブジェクトで使用できます。

nsetData:

_    $session->unsetData('day_filter');
    $session->unsetData('days');
    $session->unsetData('next_delivery_date');
_

ns(これはわずかに遅くなり、最終的にunsetDataを実行します):

_   $session->unsDayFilter();
   $session->unsDays();
   $session->unsNextDeliveryDate();
_

getData

間違いではありません! _Mage_Core_Model_Session_Abstract_Varien_には比較的未知のメソッドが存在します。このクラスのgetDataメソッドには、オプションのブール2番目のパラメーターが含まれています。trueを渡すと、変数を返すときに変数がクリアされます。

したがって、$session->getData('day_filter', true);はセッション変数day_filterを返し、同時にセッションからそれをクリアします。

nullに設定

_   $session->setData('day_filter', NULL);
   $session->setData('days', NULL);
   $session->setData('next_delivery_date', NULL);
_

nsetAll | clear

最後に、核オプションを使用できます(BEWARE:これにより、追加したデータだけでなく、セッションでALL DATAが設定解除されます):

$session->unsetAll();または$session->clear();(両方のエイリアス)

32
Drew Hunter