Cách đặt và nhận dữ liệu phiên của khách hàng trong magento 2


12

Tôi đang vật lộn với magento 2 phiên. Tôi đã tạo tập tin điều khiển dưới đây dưới dạng mã mẫu.

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

    }
}

Bất cứ ai có thể xin vui lòng giúp tôi làm thế nào để gán dữ liệu và lấy nó từ biến phiên?

Cảm ơn bạn.

Câu trả lời:


18

Bạn có thể Đặt và nhận phiên Khách hàng bằng cách sử dụng Magento\Customer\Model\Session

protected $customerSession;

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

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

Hoặc bởi người quản lý đối tượng.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->create('Magento\Customer\Model\Session');
$customerSession->setMyValue('test');
$customerSession->getMyValue();
  1. Đặt thông tin cho phiên khách hàng:
$om = \Magento\Framework\App\ObjectManager::getInstance(); $session =
$om->get('Magento\Customer\Model\Session');  
$session->setTestKey('test value');
  1. Nhận thông tin từ phiên khách hàng:
$om = \Magento\Framework\App\ObjectManager::getInstance();  $session =
$om->get('Magento\Customer\Model\Session');
echo $session->getTestKey();

Phiên sẽ mở rộng lớp lõi Magento\Framework\Session\SessionManagerđể xử lý phiên.

Hy vọng câu trả lời này sẽ giúp bạn.


Tôi đang gặp lỗi là "Gọi tới hàm thành viên setMyValue () trên null" với bộ được cung cấp và nhận mã phiên.
Aniket Shinde

Vui lòng kiểm tra câu trả lời sửa đổi được thêm bởi người quản lý đối tượng.
Krishna ijjada

Cảm ơn đã giúp đỡ. Nó hoạt động với trình quản lý đối tượng, nhưng có vẻ như nó đang tăng thời gian tải trang. Tôi đã thử nó trước khi đăng câu hỏi.
Aniket Shinde

3

Bạn cần tiêm \Magento\Customer\Model\Sessionlớp để thiết lập và nhận dữ liệu trong phiên khách hàng

Sử dụng tiêm phụ thuộc

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
}

Sử dụng Trình quản lý đối tượng

$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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.