Eu encontrei o caminho equivalente para isso no Magento2:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Defina / obtenha / desative o valor na sessão 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();
}
Dessa forma, podemos definir valores personalizados se o valor da sessão não estiver relacionado às sessões abaixo:
- \ Magento \ Back-end \ Modelo \ Sessão
- \ Magento \ Catálogo \ Modelo \ Sessão
- \ Magento \ Caixa \ Modelo \ Sessão
- \ Magento \ Cliente \ Modelo \ Sessão
- \ Magento \ Newsletter \ Modelo \ Sessão
No magento 2 não há mais
core/session
.No entanto, existem estes (podem ser outros também):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Você precisa criar uma dependência para a sessão que precisa em seu bloco ou controlador ou qualquer outra coisa.
Vamos pegar por exemplo
\Magento\Catalog\Model\Session
.Então você pode usar a sessão de catálogo dentro da classe como esta:
[EDIT]
Você não deve usar sessões em modelos.
Você deve criar wrappers na classe de bloco que os modelos podem usar para definir / obter valores.
Usando o exemplo acima, crie os métodos no bloco
Mas se você realmente deseja usar a sessão no modelo, basta criar um wrapper no seu bloco para obter a sessão:
Então você pode fazer isso no modelo:
fonte
unsMyValue
Estes são todos os tipos de sessão no Magento 2
De acordo com o padrão de codificação Magento 2 ECGM2, você primeiro usa a classe de sessão e pode passá-la ao construtor, caso contrário, este erro será mostrado
Aqui está como você pode definir e obter dados na sessão
Para definir o valor
Para obter valor
Para valor de sessão não definido
fonte