文章彙整

如何在 Magento 2 使用 Session?

By Steffi 5 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  如何在 Magento 2 使用 Session?

網頁程式設計師對於 Session 肯定都能運用自如,但在 Magento 2 使用上有什麼不同呢?用法原則上是可以共存的,也就是依然可以沿用原有的習慣,在 session_start() 後接著存取 $_SESSION 的內容,但若使用 Magento 2 所提供的功能,或許可達到事半功倍的效益!
簡單介紹下 Magento 2 使用 Session 的方法:

$this->CoreSession = $this->_objectManager->create('Magento\Framework\Session\SessionManager');

// 設定 session

$this->CoreSession->setData('session_key','session_value');

// 取 session 值

$this->CoreSession->getData('session_key');

// 清除所有 session 值

$this->CoreSession->clearStorage();

// 清除指定 session 值

$this->CoreSession->unsetData('session_key');

// 取 session 值後將該值清除

$clear = true;

$this->CoreSession->getData('session_key',$clear);

以上是基本用法,有興趣可以研究 vendor\magento\framework\Session\SessionManager.php 看看其他 function。
繼承 vendor\magento\framework\Session\SessionManager.php 的程式 也可以有類似的用法:

不同的地方就是存在 session 的位置
參考以下程式的執行結果:

$this->CoreSession = $this->_objectManager->create('Magento\Framework\Session\SessionManager');

$this->CoreSession->setData('obj_root','Magento\Framework\Session\SessionManager');

$this->MessageSession = $this->_objectManager->create('Magento\Framework\Message\Session');

$this->MessageSession->setData('obj_root','Magento\Framework\Message\Session');

$this->CatalogSession = $this->_objectManager->create('Magento\Catalog\Model\Session');

$this->CatalogSession->setData('obj_root','Magento\Catalog\Model\Session');

$this->NewsletterSession = $this->_objectManager->create('Magento\Newsletter\Model\Session');

$this->NewsletterSession->setData('obj_root','Magento\Newsletter\Model\Session');

$this->CustomerSession = $this->_objectManager->create('Magento\Customer\Model\Session');

$this->CustomerSession->setData('obj_root','Magento\Customer\Model\Session');

$this->BackendSession = $this->_objectManager->create('Magento\Backend\Model\Session');

$this->BackendSession->setData('obj_root','Magento\Backend\Model\Session');

$this->CheckoutSession = $this->_objectManager->create('Magento\Checkout\Model\Session');

$this->CheckoutSession->setData('obj_root','Magento\Checkout\Model\Session');

$this->BackendSessionQuote = $this->_objectManager->create('Magento\Backend\Model\Session\Quote');

$this->BackendSessionQuote->setData('obj_root','Magento\Backend\Model\Session\Quote');

$this->BackendAuthSession = $this->_objectManager->create('Magento\Backend\Model\Auth\Session');

$this->BackendAuthSession->setData('obj_root','Magento\Backend\Model\Auth\Session');

print_r( $_SESSION );

執行結果:

Array

(

   [default] => Array

   (

       [obj_root] => Magento\Framework\Session\SessionManager

   )

   [customer_base] => Array

   (

       [obj_root] => Magento\Customer\Model\Session

   )

   [checkout] => Array

   (

       [obj_root] => Magento\Checkout\Model\Session

   )

   [message] => Array

   (

       [obj_root] => Magento\Framework\Message\Session

   )

   [catalog] => Array

   (

       [obj_root] => Magento\Catalog\Model\Session

   )

   [newsletter] => Array

   (

       [obj_root] => Magento\Newsletter\Model\Session

   )

   [adminhtml] => Array

   (

       [obj_root] => Magento\Backend\Model\Session

   )

   [adminhtml_quote] => Array

   (

       [obj_root] => Magento\Backend\Model\Session\Quote

   )

   [admin] => Array

   (

       [obj_root] => Magento\Backend\Model\Auth\Session

   )
)

不同的 Session,  Magento 已經定義好的不同的  function 可以運用,使用時不妨參考看看,各個檔案路徑 就如上方程式所顯示,針對不同用途 呼叫不同的物件來處理,可以讓資料更方便、有效的管理。

以上就是這次關於如何在Magento 2 使用Session的介紹,看更多Magento 2 的教學,別忘了訂閱我們的電子報,以及追蹤我們的Facebook粉絲專頁唷!

更多Magento相關文章請看: Magento教學導覽

 

延伸閱讀:
如何在Magento使用Session?

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento-2

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。