2012-06-08 26 views
12

我用我的Magento定製module.Below會議是我的代碼如何在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'); 

上面的代碼工作正常,但現在我想取消設置或摧毀所有的價值呢?你能否給我提供如何解除所有設定值的解決方案?

回答

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方法包含一個可選的boolean第二個參數,如果傳遞true參數,它將在返回時清除該變量。

因此$session->getData('day_filter', true);會返回會話變量day_filter,並同時從會話中清除它。

設置爲空

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

unsetAll |明確

最後,你可以使用核選項(請注意:這將取消設置所有數據在會話中,而不僅僅是數據已添加):

$session->unsetAll();$session->clear();(每兩個別名其他)