如何在 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?
我要留言