Come ottenere l'ID del gruppo di clienti corrente in magento2


15

Voglio ottenere l' ID del gruppo di clienti corrente nel file phtml . Quando non ho effettuato l'accesso, viene restituito un gruppo di clienti di tipo generale . Come si può ottenere un output corretto?

Risposte:


18

Magento\Customer\Model\Session $customerSession utilizzando questa classe otterrai l'ID del gruppo di clienti corrente

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

NOTA: ottieni l'ID cliente solo se il cliente ha effettuato l'accesso


7

puoi ottenere l'ID di gruppo seguendo il codice

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;

}

Ma è il ritorno 1 (ID del gruppo di clienti generali) quando non ho effettuato l'accesso.
Rohan Hapani,

1
@RohanHapani ha aggiunto il codice di controllo e feedback gentili ..
Qaisar Satti,

1
@RohanHapani ho testato questo codice che non mostra groupid per non accedere l'utente if($this->_customerSession->isLoggedIn()):is isLoggedIn check?
Qaisar Satti,

Sì ... ora funziona ... Grazie signore :)
Rohan Hapani,

6

Per impostazione predefinita, Magento cancellerà la sessione del cliente: \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml.

/magento//a/92133/33057

Guarda:

vendor / Magento / module-cliente / Modello / Context.php

/**
 * Customer group cache context
 */
const CONTEXT_GROUP = 'customer_group';
/**
 * Customer authorization cache context
 */
const CONTEXT_AUTH = 'customer_logged_in';

Possiamo controllare il cliente registrato e il gruppo di clienti:

 /**
 * @var \Magento\Framework\App\Http\Context $httpContext
 */
$isLogged = $this->httpContext->getValue(Context::CONTEXT_AUTH);
$customerGroupId = $this->httpContext->getValue(Context::CONTEXT_GROUP);

Inserisci queste righe di codice nel tuo blocco.

C'è un'altra buona spiegazione qui:

https://ranasohel.me/2017/05/05/how-to-get-customer-id-from-block-when-full-page-cache-enable-in-magento-2/


2

Prova questo per ottenere l'ID gruppo corrente e il nome sia per il cliente registrato che non registrato

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

Questo può essere utile per te.


0

L'uso di \ Magento \ Customer \ Model \ Session potrebbe non riuscire se si utilizza la memorizzazione nella cache.

Dovresti usare meglio:

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();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.