2

i have an application form that is created on a CMS using this line

{{block type="[MODULE]/[BLOCK]" template="[TEMPLATE]"}}

now when you submit the form and get the success message at the top, it gets cached so no matter how many times i reload or return to the page from another page the success message remains

this is a problem because if you submit the form multiple times then go to the login page all the success messages all output there so they get piled up because their not outputting, and any error messages that should output because of invalidation do the same, the moment i clear the cache or turn it off it's fine

so how do i stop magento caching Global Messages on a CMS

1
  • Is this EE or CE?
    – benmarks
    Commented Sep 16, 2013 at 10:29

1 Answer 1

2

If you are using a session model that extends the class Mage_Core_Model_Session_Abstract then you should be able to pass the value of true to the getMessages function. This will clone the messages ready to return them to be displayed to the user and then clear them from the session so they will only be displayed once.

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');
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.