Mage :: registry()和Magento中的Session之间的区别

时间:2014-10-14 15:36:31

标签: magento magento-1.7 magento-1.8

我真的很困惑何时使用 Mage :: registry()和mage 会话

任何人都可以建议两者之间的区别以及何时使用。

3 个答案:

答案 0 :(得分:14)

Magento注册表不会保留,因为一旦您进入新页面,您将看不到仍然设置的注册表变量。我主要使用注册表在控制器和块之间进行通信。

会话将保持不变,但是知道Magento中的会话有多个名称空间,并且它们将在特定时间被清除,例如在下订单后清除checkout/session。最佳做法是为会话创建自己的命名空间,以避免重复变量之类的冲突或在错​​误的时间清除它。

一如既往,Alan Storm在这个主题上有一些好的东西可读:

http://alanstorm.com/magento_registry_singleton_tutorial

How to use Session in Magento

答案 1 :(得分:2)

如果要在SAME页面请求中访问变量(例如,将变量从控制器传递到模板),请使用Mage :: registry()

当您想要跨不同页面请求访问变量时使用会话(例如,从一个页面导航到另一个页面)

答案 2 :(得分:-1)

Mage :: registry()意味着创建新的全局变量,可以在Magento商店的任何地方访问。

作为一个静态函数,可以直接调用Magento注册表,而无需像动态函数那样实例化对象。

Magento注册表可以像ClassName :: StaticFunctionName()一样调用。

而Mage :: getSingleton()就像PHP中的会话一样。

我希望我能解释一下我的观点。