Encontré la forma equivalente de esto en Magento2:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Establecer / Obtener / Desarmar valor en la sesión principal:
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();
}
De esta manera, podemos establecer valores personalizados si nuestro valor de sesión no está relacionado con las siguientes sesiones:
- \ Magento \ Backend \ Model \ Session
- \ Magento \ Catálogo \ Modelo \ Sesión
- \ Magento \ Checkout \ Modelo \ Sesión
- \ Magento \ Cliente \ Modelo \ Sesión
- \ Magento \ Newsletter \ Model \ Session
En magento 2 no hay más
core/session
.Sin embargo, existen estos (pueden ser otros también):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Debe crear una dependencia para la sesión que necesita en su bloque o controlador o lo que sea.
Tomemos por ejemplo
\Magento\Catalog\Model\Session
.Luego puede usar la sesión de catálogo dentro de la clase de esta manera:
[EDITAR]
No debes usar sesiones en plantillas.
Debe crear contenedores en la clase de bloque que las plantillas pueden usar para establecer / obtener valores.
Usando el ejemplo anterior, cree los métodos en el bloque
Pero si realmente desea utilizar la sesión en la plantilla, puede crear un contenedor en su bloque para obtener la sesión:
Entonces puedes hacer esto en la plantilla:
fuente
unsMyValue
Estos son todos los tipos de sesión en Magento 2
Según el estándar de codificación Magento 2 ECGM2, primero usa la clase de sesión y luego puede pasarlo al constructor; de lo contrario, se mostrará este error
Así es como puede configurar y obtener datos en la sesión
Para establecer el valor
Para obtener valor
Para valor de sesión no establecido
fuente