Я нашел эквивалентный способ для этого в Magento2:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Установить / Получить / Сбросить значение в основной сессии:
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();
}
Таким образом, мы можем установить пользовательские значения, если наше значение сеанса не относится к следующим сеансам:
- \ Magento \ Backend \ Model \ Session
- \ Magento \ Каталог \ Model \ Session
- \ Magento \ Checkout \ Model \ Session
- \ Magento \ Customer \ Model \ Session
- \ Magento \ Newsletter \ Model \ Session
В magento 2 больше нет
core/session
.Есть такие (хотя могут быть и другие):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Вам нужно создать зависимость для сеанса, который вам нужен, в вашем блоке, контроллере или чем-то еще.
Давайте возьмем для примера
\Magento\Catalog\Model\Session
.Затем вы можете использовать сеанс каталога внутри класса следующим образом:
[РЕДАКТИРОВАТЬ]
Вы не должны использовать сессии в шаблонах.
Вы должны создать оболочки в классе блоков, которые шаблоны могут использовать для установки / получения значений.
Используя приведенный выше пример, создайте методы в блоке
Но если вы действительно хотите использовать сеанс в шаблоне, вы можете просто создать оболочку в своем блоке для получения сеанса:
Тогда вы можете сделать это в шаблоне:
источник
unsMyValue
Это все типы сессий в Magento 2
В соответствии со стандартом кодирования Magento 2 ECGM2 вы сначала используете класс сеанса, а затем можете передать его в конструктор, в противном случае будет показана эта ошибка.
Вот как вы можете установить и получить данные в сессии
Установить значение
Чтобы получить значение
Для значения Unset session
источник