Ich habe den entsprechenden Weg in Magento2 gefunden:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Festlegen / Abrufen / Aufheben des Werts in der Hauptsitzung:
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();
}
Auf diese Weise können wir benutzerdefinierte Werte festlegen, wenn unser Sitzungswert nicht mit den folgenden Sitzungen zusammenhängt:
- \ Magento \ Backend \ Model \ Session
- \ Magento \ Catalog \ Model \ Session
- \ Magento \ Checkout \ Model \ Session
- \ Magento \ Customer \ Model \ Session
- \ Magento \ Newsletter \ Model \ Session
In Magento 2 gibt es nicht mehr
core/session
.Es gibt jedoch diese (können auch andere sein):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
Sie müssen eine Abhängigkeit für die Sitzung erstellen, die Sie in Ihrem Block oder Controller oder was auch immer benötigen.
Nehmen wir zum Beispiel
\Magento\Catalog\Model\Session
.Dann können Sie die Katalogsitzung in der Klasse wie folgt verwenden:
[BEARBEITEN]
Sie sollten keine Sitzungen in Vorlagen verwenden.
Sie sollten Wrapper in der Blockklasse erstellen, die die Vorlagen verwenden können, um Werte festzulegen / abzurufen.
Erstellen Sie anhand des obigen Beispiels die Methoden im Block
Wenn Sie die Sitzung jedoch wirklich in der Vorlage verwenden möchten, können Sie einfach einen Wrapper in Ihrem Block erstellen, um die Sitzung abzurufen:
Dann können Sie dies in der Vorlage tun:
quelle
unsMyValue
Dies sind alle Sitzungstypen in Magento 2
Gemäß dem Magento 2 ECGM2-Codierungsstandard verwenden Sie zuerst die Sitzungsklasse und können sie dann an den Konstruktor übergeben. Andernfalls wird dieser Fehler angezeigt
So können Sie Daten in einer Sitzung festlegen und abrufen
Wert einstellen
Wert bekommen
Für nicht eingestellten Sitzungswert
quelle