0

我想了解为什么这两个模板代码片段会给出不同的结果:

1:

<?php Mage::getSingleton('localsample/session')->addError('Test'); ?>
<div id="messages_localsample_sample"><?php echo Mage::app()->getLayout()->getMessagesBlock()->getGroupedHtml() ?></div>

显示消息“测试”

2:

<?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()->getLayout()”被“$this”替换。在原始的 Magento 模板上,我发现......“$this”版本......

4

2 回答 2

0

嗯......我认为这是因为我们之前有一个“Mage::getModel('core/layout')”而不是一个“Mage::getSingleton('core/layout')”......
按设计工作...... . ;-)

于 2012-11-13T09:04:31.367 回答
0

第二个示例不起作用,因为您的示例模块没有对 Mage::app()->getLayout() 的引用。所以你需要调用Mage::app()->getLayout()->getMessagesBlock()->getGroupedHtml()。

于 2012-10-31T10:15:41.480 回答