M2 全页面缓存下获取customer group id

2.37K 浏览开发笔记

M2 全页面缓存下获取customer group id

在线上开启全页面缓存后,导致根据Customer session获取GroupId会失效。

应该这样来获取

<?php 
use MagentoCustomerModelContext;
class Data extends MagentoFrameworkAppHelperAbstractHelper
{
    public function getCustomerGroup() {
        $currentGroupId = 0;
        $objectManager = MagentoFrameworkAppObjectManager::getInstance();
        $httpContext =  $objectManager->get('MagentoFrameworkAppHttpContext');
        if($httpContext->getValue(Context::CONTEXT_AUTH)){
            $currentGroupId = $httpContext->getValue(Context::CONTEXT_GROUP);
        }
        if(!$currentGroupId){
            $customerSession = $objectManager->get('MagentoCustomerModelSession');
            if ($customerSession->isLoggedIn()) {
               $currentGroupId = $customerSession->getCustomer()->getGroupId();
            }
        }
        $customerGroup = $objectManager->get('MagentoCustomerModelGroup');
        $group = $customerGroup->load($currentGroupId);
        return $group;
    }
}
?>

也就是说在

MagentoCustomerModelAppActionContextPlugin

类里。m2默认就已经给我们准备了group id。

因为他们也发现了这个问题,以后扩展的话也方便,直接重写这个ContextPlugin就行了。

0