我真的很困惑何时使用 Mage :: registry()和mage 会话。
任何人都可以建议两者之间的区别以及何时使用。
答案 0 :(得分:14)
Magento注册表不会保留,因为一旦您进入新页面,您将看不到仍然设置的注册表变量。我主要使用注册表在控制器和块之间进行通信。
会话将保持不变,但是知道Magento中的会话有多个名称空间,并且它们将在特定时间被清除,例如在下订单后清除checkout/session
。最佳做法是为会话创建自己的命名空间,以避免重复变量之类的冲突或在错误的时间清除它。
一如既往,Alan Storm在这个主题上有一些好的东西可读:
答案 1 :(得分:2)
如果要在SAME页面请求中访问变量(例如,将变量从控制器传递到模板),请使用Mage :: registry()
当您想要跨不同页面请求访问变量时使用会话(例如,从一个页面导航到另一个页面)
答案 2 :(得分:-1)
Mage :: registry()意味着创建新的全局变量,可以在Magento商店的任何地方访问。
作为一个静态函数,可以直接调用Magento注册表,而无需像动态函数那样实例化对象。
Magento注册表可以像ClassName :: StaticFunctionName()一样调用。
而Mage :: getSingleton()就像PHP中的会话一样。
我希望我能解释一下我的观点。