답변:
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를 얻습니다.
다음 코드를 통해 그룹 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;
}
if($this->_customerSession->isLoggedIn()):
isLoggedIn check?
기본적으로 Magento는 고객 세션을 지 웁니다 \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml
.
구경하다:
공급 업체 / 마 젠토 / 모듈-고객 / 모델 /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);
이 코드 라인을 블록에 넣으십시오.
여기에 또 다른 좋은 설명이 있습니다.
현재 고객 그룹 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
}
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();
}