magento2에서 현재 고객 그룹 ID를 얻는 방법


15

나는 현재의 고객 싶어 그룹 IDPHTML 파일. 여전히 로그인하지 않은 경우 일반 유형 고객 그룹을 반환 합니다. 어떻게 적절한 출력을 얻을 수 있습니까?

답변:


18

Magento\Customer\Model\Session $customerSession 이 클래스를 사용하면 현재 고객 그룹 ID를 얻습니다.

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;
}

참고 : 고객이 로그인 한 경우에만 고객 ID를 얻습니다.


7

다음 코드를 통해 그룹 ID를 얻을 수 있습니다

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 (일반 고객 그룹의 ID)입니다.
Rohan Hapani

1
@RohanHapani 코드 친절 체크 피드백 .. 첨가
Qaisar Satti

1
@RohanHapani 나는이 코드를 테스트했지만 로그인하지 않은 사용자에 대한 groupid를 표시하지 않습니다. if($this->_customerSession->isLoggedIn()):isLoggedIn check?
Qaisar Satti

네 ... 지금 작동합니다 ... 감사합니다 선생님 :)
Rohan Hapani

6

기본적으로 Magento는 고객 세션을 지 웁니다 \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml.

/magento//a/92133/33057

구경하다:

공급 업체 / 마 젠토 / 모듈-고객 / 모델 /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

현재 고객 그룹 ID 및 로그인 된 고객과 로그인되지 않은 고객 모두의 이름을 얻으려면이를 시도하십시오.

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();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.