CMSでグローバルメッセージをキャッシュするMagentoを停止するにはどうすればよいですか
-
16-10-2019 - |
質問
この行を使用してCMSで作成された申請書があります
{{block type="[MODULE]/[BLOCK]" template="[TEMPLATE]"}}
フォームを送信して上部で成功メッセージを取得すると、キャッシュされるので、何度もリロードしたり、別のページからページに戻っても、成功メッセージは残ります。
これは問題です。フォームを複数回送信すると、ログインページにすべての成功メッセージがすべてそこに出力され、出力されていないために積み上げられ、無効化のために出力するエラーメッセージが同じであるため、積み上げられます。キャッシュをクリアしたりオフにしたりする瞬間は大丈夫です
では、CMSでグローバルメッセージをキャッシュするMagentoを停止するにはどうすればよいですか
解決
クラスmage_core_model_session_abstractを拡張するセッションモデルを使用している場合、の値を渡すことができるはずです 本当です getMessages関数に。これにより、ユーザーに表示されるようにそれらを返す準備ができているメッセージをクローンし、セッションからクリアして、それらが一度しか表示されないようにします。
public function getMessages($clear=false)
{
if (!$this->getData('messages')) {
$this->setMessages(Mage::getModel('core/message_collection'));
}
if ($clear) {
$messages = clone $this->getData('messages');
$this->getData('messages')->clear();
Mage::dispatchEvent('core_session_abstract_clear_messages');
return $messages;
}
return $this->getData('messages');
}
所属していません magento.stackexchange