0

これら 2 つのテンプレート コード スニペットで異なる結果が得られる理由を理解したいと思います。

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 はコーディングされていません)

2 つのスニペットの唯一の違いは、「Mage::app()->getLayout()」が「$this」に置き換えられていることです。元の Magento テンプレートでは、「$this」バージョンを見つけました...

4

2 に答える 2

0

サンプルモジュールにMage::app()-> getLayout()への参照がないため、2番目の例は機能していません。したがって、Mage :: app()-> getLayout()-> getMessagesBlock()-> getGroupedHtml()を呼び出す必要があります。

于 2012-10-31T10:15:41.480 に答える
0

うーん...「Mage::getSingleton('core/layout')」の代わりに「Mage::getModel('core/layout')」が以前にあったためだと思います....
設計どおりに動作します.. . ;-)

于 2012-11-13T09:04:31.367 に答える