Magento2 में वर्तमान ग्राहक समूह आईडी कैसे प्राप्त करें


16

मैं phtml फ़ाइल में वर्तमान ग्राहक समूह आईडी प्राप्त करना चाहता हूं । जब मैं अभी भी लॉग इन नहीं हूँ तो यह सामान्य प्रकार का ग्राहक समूह है । उचित उत्पादन कैसे मिल सकता है?

जवाबों:


19

Magento\Customer\Model\Session $customerSession इस वर्ग का उपयोग करके आपको वर्तमान ग्राहक समूह आईडी मिलेगा

protected $_customerSession;

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

public function getGroupId(){
 if($this->_customerSession->isLoggedIn()):
        echo $customerGroup=$this->_customerSession->getCustomer()->getGroupId();
    endif;
}

नोट: यदि ग्राहक लॉग इन करता है तो आपको केवल ग्राहक आईडी मिलेगी


7

आप कोड का पालन करके समूह आईडी प्राप्त कर सकते हैं

protected $_customerSession;

public function __construct(
        ....    
        \Magento\Customer\Model\Session $customerSession,
        ....
    ) {


        $this->_customerSession = $customerSession;

    }

public function getGroupId(){
 if($this->_customerSession->isLoggedIn()):
        echo $customerGroup=$this->_customerSession->getCustomer()->getGroupId();
    endif;

}

लेकिन जब मैं लॉग इन नहीं कर रहा हूँ तो यह 1 (सामान्य ग्राहक समूह का आईडी)
लौटाया

1
@RohanHapani ने कोड कृपया जाँच और प्रतिक्रिया जोड़ी ..
Qaisar Satti

1
@ रोहनपानी ने इस कोड का परीक्षण किया कि यह उपयोगकर्ता में लॉग इन नहीं करने के लिए आपको if($this->_customerSession->isLoggedIn()):समूहबद्ध नहीं दिखा रहा है। क्या आपने जाँच की है?
क़ैसर सत्ती

हाँ ... अब यह काम कर रहा है ... थैंक यू सर :)
रोहन हापानी

6

डिफ़ॉल्ट रूप से, Magento ग्राहक सत्र को खाली कर देगा \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml:।

/magento//a/92133/33057

जरा देखो तो:

विक्रेता / Magento / मॉड्यूल-ग्राहक / मॉडल / Context.php

/**
 * Customer group cache context
 */
const CONTEXT_GROUP = 'customer_group';
/**
 * Customer authorization cache context
 */
const CONTEXT_AUTH = 'customer_logged_in';

हम ग्राहक और ग्राहक समूह में लॉग इन कर सकते हैं:

 /**
 * @var \Magento\Framework\App\Http\Context $httpContext
 */
$isLogged = $this->httpContext->getValue(Context::CONTEXT_AUTH);
$customerGroupId = $this->httpContext->getValue(Context::CONTEXT_GROUP);

इन कोड लाइनों को अपने ब्लॉक में रखें।

यहाँ एक और अच्छी व्याख्या है:

https://ranasohel.me/2017/05/05/how-to-get-customer-id-from-block-when-full-page-cache-enable-in-magento-2/


2

यह कोशिश करें कि वर्तमान ग्राहक समूह आईडी प्राप्त करें और लॉग इन और ग्राहक दोनों के लिए नाम लिखें

protected $_customerSession;

protected $_customerGroupCollection;

public function __construct(
    ....    
    \Magento\Customer\Model\Session $customerSession,
    \Magento\Customer\Model\Group $customerGroupCollection,
    ....
) {


    $this->_customerSession = $customerSession;
    $this->_customerGroupCollection = $customerGroupCollection;

}

public function getCustomerGroup()
{
        echo $currentGroupId = $this->_customerSession->getCustomer()->getGroupId(); //Get current customer group ID
        $collection = $this->_customerGroupCollection->load($currentGroupId); 
        echo $collection->getCustomerGroupCode();//Get current customer group name
}

1
protected $_customerSession;

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

public function getGroupId(){
 if($this->_customerSession->isLoggedIn()):
        echo $customerGroup=$this->_customerSession->getCustomer()->getGroupId();
    endif;
}

यह आपके लिए उपयोगी हो सकता है।


0

यदि आप कैशिंग का उपयोग करते हैं तो \ Magento \ Customer \ Model \ Session का उपयोग करना विफल हो सकता है।

आपको बेहतर उपयोग करना चाहिए:

private $sessionProxy;

public function __construct(
    use Magento\Customer\Model\Session\Proxy $sessionProxy,
) {
    $this->sessionProxy= $sessionProxy;
}

// may return groupId or \Magento\Customer\Model\GroupManagement::NOT_LOGGED_IN_ID  
public function getGroupId(){
   $this->sessionProxy->getCustomer()->getGroupId();
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.