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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.