2016-09-19 10 views
5

カスタマーセッション内にいくつかのフィルタ情報を保存するMagentoコントローラを作成しました。Magento 2はすべてのセッションパラメータを破棄します

/** 
* @var \Magento\Catalog\Model\Session 
*/ 
protected $_filterSession; 

/** 
* @param \Magento\Customer\Model\Session $filterSession 
*/ 
public function __construct(\Magento\Customer\Model\Session $filterSession) 
{ 
    $this->_filterSession = $filterSession; 
} 

注入プロセスは非常にうまく機能している:私は、Magentoの私のためにセッションオブジェクトを生成させるために、依存性注入を使用Magentoの2のドキュメントによると

。私はセッションにアクセスし、変数をそこに格納し、それをさらに呼び出して戻すことができます。

しかし、magentoは時々、セッション情報をすべて破棄しているようです。私はマゼンタが情報を捨てる瞬間を正確に特定することはできません。ここで

コードです:

$this->_filterSession->setFrequency($frequency); 
$frequency = $this->_filterSession->getFrequency(); 

私は別のセッションスコープを試してみたが、動作は同じです。

多くの試みの後、私は情報を格納するためにPHPセッションを使用しようとしましたが、このセッションでさえ、時々破棄されました。

私は何が間違っているのか、何がこの奇妙な行動の理由であるのか分かりません。他の誰かが同じような問題やアイデアを持っていますか?ブラウザは、セッションクッキーを失ったときに事前に

おかげで、 トーマス

答えて

2

これは通常起こります。変数が失われたときに、セッション中にドメイン名が変更されるかどうかを確認する必要があります。または、別のブラウザを使用します。いくつかのブラウザプラグインが間違っているかもしれません。またはMagentoの拡張機能。多くのMageno 2の拡張機能は、現在、よく記述されていません。

+0

私はあなたが正しいと思います。私はこれをどの拡張が識別するのか分からなかったが、magento自体から使用されたセッションパラメータも失われてしまったため、誤った拡張が必要だった。 – thomas

2

PHPを使用して同様の問題が発生しました。私はsession.referer_checkと設定しました。したがって、ユーザーが外部ページから来たとき、セッションは失われました。これが問題の場合は、単にini_set('session.referer_check', '');です。

+0

あなたの答えをありがとう。しかし、同じタブ内の同じページをナビゲートすると、同じページが表示されます。とにかくそれをチェックアウトしました。問題を解決しなかった。 – thomas

0

問題自体の解決策を見つけられませんでしたが、回避しました。また、問題が発生した人のために

、ここに私のバンドエイド修正は次のとおりです。

私は新しいクッキー私はあなたがこのthreadを見てお勧めします詳細については

public function getFrequency() 
{ 
    $frequency = $this->_cookieManager->getCookie(self::FREQUENCY_SESSION_KEY); 


    if(!isset($frequency)) 
    { 
     $frequency = self::FREQUENCY_DEFAULT_VALUE; 
    } 

    return $frequency; 
} 

public function setFrequency($frequency) 
{ 
    $metadata = $this->_cookieMetadataFactory 
     ->createPublicCookieMetadata() 
     ->setPath($this->_sessionManager->getCookiePath()) 
     ->setDomain($this->_sessionManager->getCookieDomain()); 

    $this->_cookieManager->setPublicCookie(
     self::FREQUENCY_SESSION_KEY, 
     $frequency, 
     $metadata 
    ); 
} 

を導入しました。

トマス

関連する問題