Cara mendapatkan id grup pelanggan saat ini di magento2

15

Saya ingin mendapatkan id grup pelanggan saat ini dalam file phtml . Ketika saya masih belum login itu adalah tipe umum kelompok pelanggan . Bagaimana bisa mendapatkan output yang tepat?

Rohan Hapani
sumber

Jawaban:

18

Magento\Customer\Model\Session $customerSession menggunakan kelas ini Anda akan mendapatkan id grup pelanggan saat ini

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

CATATAN: Anda hanya mendapatkan id pelanggan jika pelanggan login


sumber
7

Anda bisa mendapatkan ID grup dengan mengikuti kode

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;

}
Qaisar Satti
sumber
Tetapi ini adalah pengembalian 1 (Id Grup Pelanggan Umum) ketika saya tidak masuk.
Rohan Hapani
1
@RohanHapani menambahkan kode, mohon periksa dan umpan balik ..
Qaisar Satti
1
@RohanHapani saya menguji kode ini tidak menunjukkan groupid untuk tidak login pengguna apakah Anda if($this->_customerSession->isLoggedIn()):sudahLoggedIn cek?
Qaisar Satti
Ya ... Sekarang berfungsi ... Terima kasih, Sir :)
Rohan Hapani
6

Secara default, Magento akan menghapus sesi pelanggan: \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml.

/magento//a/92133/33057

Lihatlah:

vendor / magento / modul-pelanggan / Model / Context.php

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

Kami dapat memeriksa pelanggan yang masuk dan grup pelanggan:

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

Letakkan baris kode ini di blok Anda.

Ada penjelasan bagus lainnya di sini:

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

Khoa TruongDinh
sumber
2

Coba ini untuk mendapatkan ID dan nama grup pelanggan saat ini untuk pelanggan yang sudah masuk dan tidak masuk

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
}
Pangeran Patel
sumber
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;
}

Semoga bermanfaat bagi Anda.


sumber
0

Menggunakan \ Magento \ Pelanggan \ Model \ Sesi mungkin gagal jika Anda menggunakan caching.

Anda sebaiknya menggunakan:

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();
}
Yann Charlou
sumber