J'ai trouvé le moyen équivalent pour cela dans Magento2:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Définir / Obtenir / Annuler la valeur dans la session principale:
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 cette manière, nous pouvons définir des valeurs personnalisées si notre valeur de session n'est pas liée aux sessions ci-dessous:
- \ Magento \ Backend \ Model \ Session
- \ Magento \ Catalogue \ Modèle \ Session
- \ Magento \ Checkout \ Model \ Session
- \ Magento \ Client \ Modèle \ Session
- \ Magento \ Newsletter \ Modèle \ Session
Dans magento 2, il n'y en a plus
core/session
.Il y en a cependant (peut-être d'autres aussi):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Vous devez créer une dépendance pour la session dont vous avez besoin dans votre bloc, votre contrôleur ou autre.
Prenons par exemple
\Magento\Catalog\Model\Session
.Vous pouvez ensuite utiliser la session de catalogue dans la classe comme ceci:
[EDIT]
Vous ne devriez pas utiliser de sessions dans des modèles.
Vous devez créer des wrappers dans la classe de bloc que les modèles peuvent utiliser pour définir / obtenir des valeurs.
En utilisant l'exemple ci-dessus, créez les méthodes dans le bloc
Mais si vous voulez vraiment utiliser la session dans le modèle, vous pouvez simplement créer un wrapper dans votre bloc pour obtenir la session:
Ensuite, vous pouvez le faire dans le modèle:
la source
unsMyValue
Ce sont tous les types de session dans Magento 2
Conformément à la norme de codage Magento 2 ECGM2, vous utilisez d’abord la classe de session, puis vous pouvez la transmettre au constructeur, sinon cette erreur sera affichée.
Voici comment vous pouvez définir et obtenir des données en session
Pour définir la valeur
Pour obtenir de la valeur
Pour la valeur de session non définie
la source