วิธีการตั้งค่าและรับข้อมูลเซสชันลูกค้าใน magento 2


12

ฉันกำลังดิ้นรนกับวีโอไอพี 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

โปรดตรวจสอบคำตอบที่แก้ไขที่เพิ่มโดยผู้จัดการวัตถุ
กฤษณะ ijjada

ขอบคุณสำหรับความช่วยเหลือ มันทำงานร่วมกับตัวจัดการวัตถุ แต่ดูเหมือนว่ามันจะเพิ่มเวลาในการโหลดหน้า ฉันลองก่อนโพสต์คำถาม
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
}

ใช้ Object Manager

$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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.