मैं phtml फ़ाइल में वर्तमान ग्राहक समूह आईडी प्राप्त करना चाहता हूं । जब मैं अभी भी लॉग इन नहीं हूँ तो यह सामान्य प्रकार का ग्राहक समूह है । उचित उत्पादन कैसे मिल सकता है?
मैं phtml फ़ाइल में वर्तमान ग्राहक समूह आईडी प्राप्त करना चाहता हूं । जब मैं अभी भी लॉग इन नहीं हूँ तो यह सामान्य प्रकार का ग्राहक समूह है । उचित उत्पादन कैसे मिल सकता है?
जवाबों:
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;
}
नोट: यदि ग्राहक लॉग इन करता है तो आपको केवल ग्राहक आईडी मिलेगी
आप कोड का पालन करके समूह आईडी प्राप्त कर सकते हैं
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;
}
if($this->_customerSession->isLoggedIn()):
समूहबद्ध नहीं दिखा रहा है। क्या आपने जाँच की है?
डिफ़ॉल्ट रूप से, Magento ग्राहक सत्र को खाली कर देगा \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml
:।
जरा देखो तो:
विक्रेता / 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);
इन कोड लाइनों को अपने ब्लॉक में रखें।
यहाँ एक और अच्छी व्याख्या है:
यह कोशिश करें कि वर्तमान ग्राहक समूह आईडी प्राप्त करें और लॉग इन और ग्राहक दोनों के लिए नाम लिखें
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
}
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;
}
यह आपके लिए उपयोगी हो सकता है।
यदि आप कैशिंग का उपयोग करते हैं तो \ 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();
}