Як отримати поточний ідентифікатор групи клієнтів у 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
@RohanHapani Я перевірив цей код, він не показує groupid, щоб не входити в користувач, чи ви if($this->_customerSession->isLoggedIn()):це перевіряли isLoggedIn?
Qaisar Satti

Так ... Зараз це працює ... Дякую, сер :)
Рохан Хапані

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

Спробуйте це, щоб отримати ідентифікатор і ім’я поточної групи клієнтів як для ввійшли, так і не ввійшли клієнта

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 \ Клієнта \ Модель \ Сесія може не вдатися, якщо ви використовуєте кешування.

Вам слід краще використовувати:

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.