2012-06-08 16 views
12

używam sesji w moim Magento niestandardowy module.Below jest mój kodJak przerwać sesję w 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'); 

Powyższy kod działa poprawnie, ale teraz chcę rozbrojony lub zniszczyć wszystkie wartości? Czy możesz podać mi rozwiązanie, jak usunąć wszystkie ustawione wartości?

Odpowiedz

31

Istnieje kilka sposobów na anulowanie ustawień zmiennych sesyjnych w Magento. Większość z nich (nie wszystkie) są zdefiniowane w Varien_Object i są dostępne dla wszystkich obiektów w Magento, które je rozszerzają.

unsetData:

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

uns (który będzie nieznacznie wolniej i ostatecznie wykonuje unsetData tak):

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

getData

nie pomyłka! Stosunkowo nieskrępowana metoda istnieje w Mage_Core_Model_Session_Abstract_Varien. Metoda getData w tej klasie zawiera opcjonalny drugi parametr boolowski, który jeśli zostanie przekazany, usunie zmienną podczas jej zwracania.

Tak więc $session->getData('day_filter', true); zwróci zmienną sesji day_filter, a także wyczyści ją z sesji w tym samym czasie.

ustawiony na NULL:

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

unsetAll | jasne

Wreszcie można użyć opcji jądrowej (UWAGA: to będzie rozbroić WSZYSTKIE DANE w sesji, a nie tylko dane, które zostały dodane):

$session->unsetAll(); lub $session->clear(); (zarówno aliasy każdego inne)