【问题标题】:Magento: How to pass a variable from block to a ModelMagento:如何将变量从块传递到模型
【发布时间】:2013-09-27 06:51:11
【问题描述】:

我正在使用一个扩展,我需要将变量从块类移回模型,我使用过会话它有时会工作但不统一, 有没有其他办法通过呢,

提前致谢,

【问题讨论】:

  • 您是否在相关块中使用该模型?能给我举个例子吗?一些代码可能......

标签: magento


【解决方案1】:

尝试使用 Magento 的注册表模式

三种注册方法是

Mage::register   
Mage::unregister   
Mage::registry 

register 方法是您设置类全局变量的方式。

Mage::register('some_name', $var);

然后,在请求执行的后期,(从任何方法),你可以取回你的变量

$my_var = Mage::registry('some_name');

最后,如果你想让你的变量不可用,你可以使用 unregister 方法将它从注册表中删除。

Mage::unregister('some_name');

Source

【讨论】:

  • 它的优惠券代码限制,其中扩展要求用户输入积分并根据计算,将值传递回模型。我也尝试过核心/会话,但只有在初始值通过后才会起作用。会话可能无法设置初始值,至少对我来说很复杂
  • 只需在上面所说的 Magento 的注册表模式方法中尝试一下
  • 非常感谢您的及时回复。当我尝试使用模型中的注册表在块中使用时,它工作正常,但是如果我尝试通过注册表将值处理回模型,它不会。可能是我有点糊涂了。但无论如何感谢您的及时回复。
  • 嘿,你不如试试@Fantus 说的组合,看看stackoverflow.com/questions/4006183/…,让我试着提示你
【解决方案2】:

如果你可以将模型用作单例,你可以试试这个:

 Mage::getSingleton('yourmodule/yourmodel')->setStuff('xxxx');

以后

 Mage::getSingleton('yourmodule/yourmodel')->getStuff();

如果您不知道单例是什么,您可能应该尝试使用 epynic 的注册表方法来防止出现问题。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2015-09-12
    • 2012-06-08
    相关资源
    最近更新 更多