Festlegen und Abrufen von Kundensitzungsdaten in Magento 2

12

Ich habe Probleme mit der Magento 2-Sitzung. Ich habe unten Controller-Datei als Beispielcode erstellt.

<?php
namespace vendor_name\module_name\Controller\SetGetSession;

use Magento\Framework\App\Action\Action;

class SetGetSession extends Action
{
    protected $customerSession;

    public function _construct(
        \Magento\Customer\Model\Session $customerSession
    ) {
        $this->customerSession = $customerSession;
    }   

    public function execute()
    {

    }
}

Kann mir bitte jemand helfen, Daten zuzuweisen und aus der Sitzungsvariablen abzurufen?

Vielen Dank.

Aniket Shinde
quelle

Antworten:

18

Sie können die Kundensitzung mithilfe von festlegen und abrufen Magento\Customer\Model\Session

protected $customerSession;

public function __construct(   
    \Magento\Customer\Model\Session $customerSession
){
    $this->customerSession = $customerSession;
}

$this->customerSession->setMyValue('test');
$this->customerSession->getMyValue();

Oder per Objektmanager.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->create('Magento\Customer\Model\Session');
$customerSession->setMyValue('test');
$customerSession->getMyValue();
  1. Festlegen einer Information für die Kundensitzung:
$om = \Magento\Framework\App\ObjectManager::getInstance(); $session =
$om->get('Magento\Customer\Model\Session');  
$session->setTestKey('test value');
  1. Informationen aus der Kundensitzung abrufen:
$om = \Magento\Framework\App\ObjectManager::getInstance();  $session =
$om->get('Magento\Customer\Model\Session');
echo $session->getTestKey();

Die Sitzung erweitert die Kernklasse Magento\Framework\Session\SessionManager, um die Sitzung abzuwickeln.

Hoffe, diese Antwort wird Ihnen helfen.

Krishna ijjada
quelle
Ich erhalte die Fehlermeldung "Aufruf einer Mitgliedsfunktion setMyValue () auf null" mit dem angegebenen Satz und erhalte den Sitzungscode.
Aniket Shinde
Bitte überprüfen Sie die vom Objektmanager hinzugefügte geänderte Antwort.
Krishna Ijjada
Danke für die Hilfe. Es funktioniert mit dem Objektmanager, aber es sieht so aus, als würde es die Ladezeit der Seite verlängern. Ich habe es versucht, bevor ich die Frage gestellt habe.
Aniket Shinde
3

Sie müssen eine \Magento\Customer\Model\SessionKlasse für das Einfügen einfügen und Daten in der Kundensitzung abrufen

Verwenden der Abhängigkeitsinjektion

protected $customerSession;

public function _construct(
    ...
    \Magento\Customer\Model\Session $customerSession
    ...
) {
    ...
    $this->customerSession = $customerSession;
    ...
}   

public function setValue()
{
    return $this->customerSession->setMyValue('YourValue'); //set value in customer session
}

public function getValue()
{
    return $this->customerSession->getMyValue(); //Get value from customer session
}

Verwenden des Objektmanagers

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$customerSession = $objectManager->get('Magento\Customer\Model\Session');

$customerSession->setMyValue('YourValue'); //set value in customer session
echo $customerSession->getMyValue(); //Get value from customer session
Prinz Patel
quelle