Как отключить сеанс в 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');
Приведенный выше код работает нормально, но теперь я хочу сбросить или уничтожить все значения? Можете ли вы дать мне решение, как сбросить все установленные значения?
1 ответ
Существует несколько способов сброса переменных сеанса в 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();
получить данные
Не ошибка! Относительно неизвестный метод существует в 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 | Чисто
Наконец, вы можете использовать ядерную опцию (ВНИМАНИЕ: это приведет к удалению ВСЕХ ДАННЫХ в сеансе, а не только данных, которые вы добавили):
$session->unsetAll();
или же $session->clear();
(оба псевдонима друг друга)