我想了解为什么这两个模板代码段会产生不同的结果:
<?php Mage::getSingleton('localsample/session')->addError('Test'); ?>
<div id="messages_localsample_sample"><?php echo Mage::app()->getLayout()->getMessagesBlock()->getGroupedHtml() ?></div>
显示消息'Test'
和
<?php Mage::getSingleton('localsample/session')->addError('Test'); ?>
<div id="messages_localsample_sample"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div>
不显示任何内容,仅在页面源中生成此内容:
<div id="messages_localsample_sample"></div>
(没有特定的getMessageBlock或getGroupedHtml编码)
两个片段之间的唯一区别是:“Mage :: app() - &gt; getLayout()”被“$ this”取代。在最初的Magento模板上,我发现......“$ this”版本......
答案 0 :(得分:0)
第二个示例无效,因为您的示例模块没有对Mage :: app() - &gt; getLayout()的引用。 所以你需要调用Mage :: app() - &gt; getLayout() - &gt; getMessagesBlock() - &gt; getGroupedHtml()。
答案 1 :(得分:0)
嗯...我认为这是因为我们之前有一个“Mage :: getModel('core / layout')”而不是“Mage :: getSingleton('core / layout')”....
按设计工作......; - )