文章彙整

如何在 Magento 2 使用 Session?

Astral WebBy Astral Web 4 years agoNo Comments
首頁  /  Magento操作  /  Open Source  /  如何在 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?

 000

歐斯瑞

歐斯瑞 - 一個對網路世界充滿熱情的團隊

歐斯瑞提供免費電商知識,並協助各大類型之企業 電商諮詢建置MagentoShopify 相關的電商專案。

立即聯繫我們

推薦文章

Categories:
  Open SourceAdobe CommerceMagento操作後端開發技術應用

留下回應

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