如何在Magento中取消会话?

时间:2012-06-08 04:01:45

标签: magento magento-1.5

我在我的magento自定义模块中使用session .Below是我的代码

$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');

上面的代码工作正常,但现在我想取消或破坏所有的价值?能否请您解决如何取消所有设定值的问题?

1 个答案:

答案 0 :(得分:31)

有几种方法可以在Magento中取消设置会话变量。其中大部分(并非全部)都在Varien_Object中定义,因此可以扩展到Magento中扩展它的所有对象。

<强> unsetData:

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

uns (速度稍慢,最终会执行unsetData):

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

<强>的getData

不是错! Mage_Core_Model_Session_Abstract_Varien中存在一种相对未知的方法。此类中的getData方法包含一个可选的布尔第二个参数,如果传递给它,则会在返回时清除该变量。

因此$session->getData('day_filter', true);会返回会话变量day_filter,同时也会从会话中清除它。

设为null

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

unsetAll |明确

最后你可以使用核选项(当心:这会在会话中取消 ALL DATA ,而不仅仅是你添加的数据):

$session->unsetAll();$session->clear();(彼此的别名)