2012-06-08 21 views
12

Ich verwende Sitzung in meinem magento benutzerdefinierten module.Below ist mein CodeWie lösche ich die Sitzung in 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'); 

Der obige Code funktioniert gut, aber jetzt möchte ich nicht gesetzt oder alle den Wert zerstören? Können Sie mir bitte die Lösung zur Verfügung stellen, wie Sie alle eingestellten Werte aufheben können?

Antwort

31

Es gibt mehrere Möglichkeiten, Sitzungsvariablen in Magento zu deaktivieren. Die meisten davon (nicht alle) sind in Varien_Object definiert und somit für alle Objekte in Magento verfügbar, die sie erweitern.

unsetData:

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

uns (die geringfügig langsamer sein wird, und führt letztlich unsetData sowieso):

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

getData

kein Fehler! Eine relativ unbekannte Methode existiert in Mage_Core_Model_Session_Abstract_Varien. Die Methode getData in dieser Klasse enthält einen optionalen booleschen zweiten Parameter, der bei Rückgabe der Variable die Variable löscht, während sie zurückgegeben wird.

So würde $session->getData('day_filter', true); die Sitzungsvariable day_filter zurückgeben und gleichzeitig aus der Sitzung löschen.

auf null gesetzt:

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

unsetAll | klar

Schließlich könnte man die nukleare Option verwenden (ACHTUNG: wird ALL DATA in der Sitzung, nicht nur die Daten, die Sie hinzugefügt haben, diese löschen):

$session->unsetAll(); oder $session->clear(); (beide Aliase von jedem andere)

Verwandte Themen