に私は私のMagentoの店をajaxifyingていますし、ほとんどすべてがswimmingly起こっている、一つのことを除い:は、Magentoの組み込みのメッセージシステムを使用したカスタムコントローラ+アクション
問題: 私はできないように見えますAJAXリクエストに対するレスポンスのメッセージブロックを取得して表示する。
説明: (例えばよりカートに多くの項目を追加する動作しませんでした何かをしようとした後、ユーザーに表示されるバー(これは成功メッセージがあるとき、または緑)私は赤いについて話しています在庫が許せます)。エラーを生成する特定のAjaxリクエストに応答するとき、このAjaxリクエストに対するレスポンスをレンダリングするために使用されるかなり空のテンプレートを通してメッセージのマークアップを表示します。エラーが発生しなければ、異なる適切な応答がレンダリングされます。私が試した
物事:データを銀杏
$_messages = Mage::getSingleton("core/session")->getMessages();
echo $this->getLayout()->createBlock("core/messages")->setMessages($_messages)->getGroupedHtml();
echo $this->getMessagesBlock()->getGroupedHtml();
echo Mage::app()->getLayout()->getMessagesBlock()->
setMessages(Mage::getSingleton('customer/session')->getMessages(true))->getGroupedHtml();
Mage::log
は、空のメッセージのコレクションを示しています ここで私が使用しようとしたPHPコードの数行です。
レイアウトXMLは次のとおりです(コントローラから$this->loadLayout('ajax_msg_handle');
を使用しています)。
<ajax_msg_handle>
<block type="core/template" name="error.root" output="toHtml" template="page/html/ajax-messages.phtml">
<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>
</block>
</ajax_msg_handle>
細部のポイント、私は次のよう考えられてきた:カートの「削除」、「編集」などの
ほとんどのアクションを、商品ページの「カートに追加」、最初にリダイレクト別の場所に格納されているため、エラーを示す2番目の要求が行われます。おそらくこれらのメッセージはすぐに表示されることはありませんが、エラーを生成した後に要求に応答する場合に限ります。だから私は、これらのメッセージを表示するアクションにリダイレクトすることによって、この可能な規則に従おうとしましたが、これはうまくいきませんでした。
メッセージを表示する方法を教えてもらえれば、それは私の一日になります。
ありがとう!まだメッセージが表示されていないと判断された場所はまだわかりませんが、あなたの方法は問題を効果的に解決します。 – pancake