magento设置全局可用变量 - 在单独文件中工作的最佳方法

时间:2015-07-11 21:30:02

标签: oop magento global

在结帐/购物车中的商品列表中,我声明了以下内容:

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

将在另一个.phtml文件中使用。这是在../checkout/cart.phtml

中完成的

该文件然后调用this-> getChildHtml(' totals'),后者又调用两个(+更多).phtml个文件:

  1. /frontend/base/default/template/tax/checkout/subtotal.phtml - 它在这里工作,设置值并打印
  2. /frontend/mycompany/default/template/tax/checkout/grandtotal.phtml - 它在这里不起作用。
  3. 我有几个问题:

    1. 显然首先,为什么不呢?我怀疑在mycompany文件中声明Mage :: helper(..)的路径有些不同,但我不知道
    2. 我可以将哪个工作类附加到两个phtml文件中?
    3. 我应该使用Mage:getSingleton(..)代替?
    4. 是否有更好的" Magento方式"这样做?
    5. 显然我想避免使用全局变量...... 感谢

1 个答案:

答案 0 :(得分: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助手类没有公共属性。