Как установить и получить данные сеанса клиента в magento 2

12

Я борюсь с сессией magento 2. Я создал ниже файл контроллера в качестве примера кода.

<?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()
    {

    }
}

Может кто-нибудь, пожалуйста, помогите мне с тем, как назначить данные и получить их из переменной сеанса?

Спасибо.

Аникет Шинде
источник

Ответы:

19

Вы можете установить и получить сеанс клиента, используя Magento\Customer\Model\Session

protected $customerSession;

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

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

Или менеджером объектов.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->create('Magento\Customer\Model\Session');
$customerSession->setMyValue('test');
$customerSession->getMyValue();
  1. Установка информации для сеанса клиента:
$om = \Magento\Framework\App\ObjectManager::getInstance(); $session =
$om->get('Magento\Customer\Model\Session');  
$session->setTestKey('test value');
  1. Получение информации от клиентской сессии:
$om = \Magento\Framework\App\ObjectManager::getInstance();  $session =
$om->get('Magento\Customer\Model\Session');
echo $session->getTestKey();

Сеанс расширяет базовый класс Magento\Framework\Session\SessionManagerдля обработки сеанса.

Надеюсь, этот ответ поможет вам.

Кришна иджада
источник
Я получаю сообщение об ошибке «Вызов функции-члена setMyValue () на ноль» с предоставленным набором и получением кода сеанса.
Аникет Шинд
Пожалуйста, проверьте измененный ответ, добавленный менеджером объекта.
Кришна Иджада
Спасибо за помощь. Он работает с диспетчером объектов, но, похоже, увеличивает время загрузки страницы. Я попробовал это прежде, чем отправить вопрос.
Аникет Шинд
3

Вам нужно ввести \Magento\Customer\Model\Sessionкласс для установки и получить данные в сеансе клиента

Использование зависимости зависимости

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
}

Использование диспетчера объектов

$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
Принц Патель
источник