Як встановити та отримати дані клієнтської сесії в 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 () на нуль" з наданим набором і отримую код сеансу.
Aniket Shinde

Перевірте модифіковану відповідь, яку додав менеджер об'єктів
Крішна іджджада

Дякую за допомогу. Він працює з диспетчером об'єктів, але, схоже, збільшується час завантаження сторінки. Я спробував це, перш ніж розміщувати питання.
Aniket Shinde

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.