2012-06-08 3 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'); 

унс (который будет чуть медленнее и в любом случае, в конечном счете выполняет unsetData):

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

GetData

Не ошибка! Относительно не известный метод существует в Mage_Core_Model_Session_Abstract_Varien. Метод getData в этом классе содержит необязательный логический второй параметр, который, если пройденный true, очистит переменную при ее возврате.

Таким образом, $session->getData('day_filter', true); будет возвращать переменную сеанса day_filter, а также очищать ее от сеанса одновременно.

Набор обнулить:

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

unsetAll | ясно

Наконец, вы могли бы использовать ядерный вариант (BEWARE: Это будет сбросить ВСЕ ДАННЫЕ в сессии, а не только данные, которые вы добавили):

$session->unsetAll(); или $session->clear(); (как псевдонимы каждого прочее)

Смежные вопросы