13

我在我的 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');

上面的代码工作正常,但现在我想取消设置或销毁所有值?您能否为我提供如何取消设置所有设置值的解决方案?

4

1 回答 1

32

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

未设置数据:

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

uns(这会稍微慢一些,最终还是会执行 unsetData ):

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

获取数据

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

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

设置为 null

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

全部取消 | 清除

最后,您可以使用核选项(注意:这将取消设置会话中的所有数据,而不仅仅是您添加的数据):

$session->unsetAll();$session->clear();(互为别名)

于 2012-06-08T06:31:11.357 回答