Magento 2 內部變數傳遞
在開發期間,常常會遇到不知道如何在內部傳遞變數的問題,Controller 做完查詢 ( query ),到了 template 還要再查詢一次,為了節省查詢的次數,我們可以利用內建 Registry 幫助我們做內部的變數傳遞。
- 適用版本:Magento 2.0.0 以上
1.產生物件
這裡因為示範方便,我們使用 objectManager 來 new Registry 的 instance,比較好的做法,應該是要放在 __construct() 內,讓程式初始化的時候,就自動幫我們 new 出來,這樣才符合依賴注入 ( Dependency Injection ) 的精神。
Namespace:
Magento\Framework\Registry
範例程式:
<?php /* @var \Magento\Framework\Registry $coreRegistry */ $coreRegistry = $this->_objectManager->get('Magento\Framework\Registry');
2.寫入變數
將查詢完的 $category 物件寫入至 current_category 變數中,除了物件之外,也可以寫入 變數、陣列,使用起來算是非常方便。
範例程式:
$coreRegistry->register('current_category', $category);
3.取出變數
這段通常會寫在 block 或是 template ( .phtml ) 中,這樣在 block 裡面不用重新做一次資料庫的查詢,直接用從 Controller 傳遞過來的變數。
範例程式:
$coreRegistry->registry('current_category');
以上是這次關於如何在Magento 2利用內建 Registry 幫助我們做內部的變數傳遞的教學,更多電商相關的資訊,歡迎訂閱歐斯瑞電子報,以及追蹤我們的Facebook粉絲專頁喔!
我要留言