Znalazłem równoważny sposób na to w Magento2:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Ustaw / Pobierz / Rozbieraj wartość w sesji głównej:
protected $_coreSession;
public function __construct(
-----
\Magento\Framework\Session\SessionManagerInterface $coreSession
){
$this->_coreSession = $coreSession;
----
}
public function setValue(){
$this->_coreSession->start();
$this->_coreSession->setMessage('The Core session');
}
public function getValue(){
$this->_coreSession->start();
return $this->_coreSession->getMessage();
}
public function unSetValue(){
$this->_coreSession->start();
return $this->_coreSession->unsMessage();
}
W ten sposób możemy ustawić niestandardowe wartości, jeśli nasza wartość sesji nie jest powiązana z poniższymi sesjami:
- \ Magento \ Backend \ Model \ Session
- \ Magento \ Katalog \ Model \ Sesja
- \ Magento \ Checkout \ Model \ Session
- \ Magento \ Customer \ Model \ Session
- \ Magento \ Newsletter \ Model \ Sesja
W Magento 2 nie ma już nic
core/session
.Są jednak te (mogą być także inne):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Musisz stworzyć zależność dla sesji, której potrzebujesz w swoim bloku, kontrolerze lub czymkolwiek.
Weźmy na przykład
\Magento\Catalog\Model\Session
.Następnie możesz użyć sesji katalogu wewnątrz klasy w następujący sposób:
[EDYCJA]
Nie należy używać sesji w szablonach.
Powinieneś utworzyć opakowania w klasie bloków, których szablony mogą używać do ustawiania / pobierania wartości.
Korzystając z powyższego przykładu, utwórz metody w bloku
Ale jeśli naprawdę chcesz użyć sesji w szablonie, możesz po prostu utworzyć opakowanie w swoim bloku, aby uzyskać sesję:
Następnie możesz to zrobić w szablonie:
źródło
unsMyValue
Są to wszystkie typy sesji w Magento 2
Zgodnie ze standardem kodowania Magento 2 ECGM2 najpierw używasz klasy sesji, a następnie możesz przekazać ją do konstruktora, w przeciwnym razie ten błąd zostanie wyświetlony
Oto jak ustawić i uzyskać dane w sesji
Aby ustawić wartość
Aby uzyskać wartość
Dla Nieustawionej wartości sesji
źródło