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.

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.