magento 2で顧客セッションデータを設定および取得する方法


12

magento 2のセッションで苦労しています。以下のコントローラーファイルをサンプルコードとして作成しました。

<?php
namespace vendor_name\module_name\Controller\SetGetSession;

use Magento\Framework\App\Action\Action;

class SetGetSession extends Action
{
    protected $customerSession;

    public function _construct(
        \Magento\Customer\Model\Session $customerSession
    ) {
        $this->customerSession = $customerSession;
    }   

    public function execute()
    {

    }
}

誰でもデータを割り当ててセッション変数から取得する方法を教えてくれますか?

ありがとうございました。

回答:


19

を使用してカスタマーセッションを設定および取得できます Magento\Customer\Model\Session

protected $customerSession;

public function __construct(   
    \Magento\Customer\Model\Session $customerSession
){
    $this->customerSession = $customerSession;
}

$this->customerSession->setMyValue('test');
$this->customerSession->getMyValue();

またはオブジェクトマネージャによって。

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->create('Magento\Customer\Model\Session');
$customerSession->setMyValue('test');
$customerSession->getMyValue();
  1. 顧客セッションへの情報の設定:
$om = \Magento\Framework\App\ObjectManager::getInstance(); $session =
$om->get('Magento\Customer\Model\Session');  
$session->setTestKey('test value');
  1. カスタマーセッションから情報を取得する:
$om = \Magento\Framework\App\ObjectManager::getInstance();  $session =
$om->get('Magento\Customer\Model\Session');
echo $session->getTestKey();

セッションは、コアクラスMagento\Framework\Session\SessionManagerを拡張してセッションを処理します。

この回答がお役に立てば幸いです。


提供されたセットとセッションコードを取得すると、「nullでメンバー関数setMyValue()を呼び出す」というエラーが発生します。
Aniket Shinde

オブジェクトマネージャによって追加された修正済みの回答を確認してください。
クリシュナイジャダ16

助けてくれてありがとう。オブジェクトマネージャで動作しますが、ページの読み込み時間が長くなっているようです。質問を投稿する前に試しました。
Aniket Shinde

3

\Magento\Customer\Model\Session顧客セッションでセットのデータを取得してデータを取得する必要があります

依存性注入の使用

protected $customerSession;

public function _construct(
    ...
    \Magento\Customer\Model\Session $customerSession
    ...
) {
    ...
    $this->customerSession = $customerSession;
    ...
}   

public function setValue()
{
    return $this->customerSession->setMyValue('YourValue'); //set value in customer session
}

public function getValue()
{
    return $this->customerSession->getMyValue(); //Get value from customer session
}

オブジェクトマネージャの使用

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$customerSession = $objectManager->get('Magento\Customer\Model\Session');

$customerSession->setMyValue('YourValue'); //set value in customer session
echo $customerSession->getMyValue(); //Get value from customer session
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.