2015-07-11 49 views
0

在結帳/車中的物品的上市工作,我宣佈:Magento的全局設置可變量 - 最佳方法,在不同的文件

Mage::helper('checkout/cart')->group_rate_shipping_info=$group_rate['shipping_info']; 

到另一個.phtml文件中使用。這在../checkout/cart.phtml

正在做的這個文件,然後調用這個 - >直到最底層(「總數」),這反過來又調用了兩個(+更多).phtml文件:

  1. /frontend/base/default/template/tax/checkout/subtotal.phtml - 它的工作原理在這裏,值設置和打印
  2. /frontend/mycompany/default/template/tax/checkout/grandtotal.phtml - 它不起作用。

我有幾個問題:

  1. 顯然第一,爲什麼不呢?我懷疑在mycompany文件內部聲明Mage :: helper(..)的路徑有點不同,但我不知道
  2. 我可以附加一個屬性來在兩個phtml文件中工作的工作類是什麼?
  3. 我應該用Mage:getSingleton(..)來代替嗎?
  4. 這樣做有沒有更好的「Magento方式」?

很顯然,我希望避免使用全局變量... 感謝

+0

有可能在模板之間存在不同的塊層次結構,這些層次結構不起作用。要分享他們,你需要以某種方式存儲它,不管你用'Mage :: register()'和'registry()'來做這些事情,會話還是其他的東西都會起作用 –

+0

不知道這是不是你想要的試圖做到:http://stackoverflow.com/questions/3340982/how-do-i-save-value-in-my-own-session-variable-in-magento – PedroKTFC

回答

0

有Magento的註冊表:

Mage::register('group_rate_shipping_info', $group_rate['shipping_info']); 

確保,這是第一個註冊的總量呈現出前。 Magento註冊表只是當前請求的一種會話。通常,註冊表在控制器中用於註冊一個對象或變量,以便在調度週期中稍後訪問。例如,在一個目錄控制,註冊表被用於目前的產品或類別供以後訪問存儲在塊或模板之一:

//in controller: 
Mage::register('current_product', $product); 
... 
//later on in block: 
$_product = Mage::registry('current_product'); 

注:

Mage::helper('checkout/cart')->group_rate_shipping_info = $group_rate['shipping_info']; 

這將無法正常工作因爲大多數Magento幫助程序類沒有公共屬性。