Как отключить сеанс в 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(); (оба псевдонима друг друга)

Другие вопросы по тегам