如何在Magento中检索成功消息?

时间:2010-06-16 07:10:12

标签: magento

如何在Magento中检索成功消息?

Array
(
    [core] => Array
        (
            [_session_validator_data] => Array
                (
                    [remote_addr] => 192.168.151.102
                    [http_via] => 
                    [http_x_forwarded_for] => 
                    [http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
                )

            [session_hosts] => Array
                (
                    [technova2] => 1
                )

            [messages] => Mage_Core_Model_Message_Collection Object
                (
                    [_messages:protected] => Array
                        (
                        )

                    [_lastAddedMessage:protected] => Mage_Core_Model_Message_Success Object
                        (
                            [_type:protected] => success
                            [_code:protected] => Your review has been accepted for moderation
                            [_class:protected] => 
                            [_method:protected] => 
                            [_identifier:protected] => 
                            [_isSticky:protected] => 
                        )

                )

            [just_voted_poll] => 
            [visitor_data] => Array
                (
                    [] => 
                    [server_addr] => -1062692990
                    [remote_addr] => -1062693018
                    [http_secure] => 
                    [http_host] => technova2
                    [http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
                    [http_accept_language] => en-US,en;q=0.8
                    [http_accept_charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
                    [request_uri] => /~rahuls/sextoys/index.php/review/product/list/id/169/
                    [session_id] => 21bq2vtkup5m1gtghknlu1tit42c6dup
                    [http_referer] => http://technova2/~rahuls/sextoys/index.php/review/product/list/id/169/
                    [first_visit_at] => 2010-06-16 05:49:56
                    [is_new_visitor] => 
                    [last_visit_at] => 2010-06-16 06:00:00
                    [visitor_id] => 935
                    [last_url_id] => 23558
                )

            [last_url] => http://technova2/~rahuls/sextoys/index.php/review/product/list/id/169/
        )     
)

发布评论后,我想显示以下消息:“您的评论已被接受审核”。它出现在$ _SESSION数组中,但我该如何获取它?请帮忙。提前谢谢。

7 个答案:

答案 0 :(得分:10)

这是你所有答案的组合。这对我来说几乎可以阻止任何一块:

    //A Success Message
    Mage::getSingleton('checkout/session')->addSuccess("Your cart has been updated successfully!");

    //A Error Message
    Mage::getSingleton('checkout/session')->addError("Your cart has been updated successfully!");

    //A Info Message (See link below)
    Mage::getSingleton('checkout/session')->addNotice("This is just a FYI message...");

    //These two lines are required to get it to work
    session_write_close(); //THIS LINE IS VERY IMPORTANT!
    $this->_redirect('checkout/cart');

归功于:

http://www.magentocommerce.com/boards/viewthread/40324/(我在哪里发布了答案)

http://www.deepcodeonline.com/blog/magento/how-to-display-error-success-and-notice-messages-in-magento/

答案 1 :(得分:9)

以下代码适用于我:

  1. 设置控制器消息:

    Mage::getSingleton('customer/session')
        ->addSuccess(Mage::helper('mymodule')->__('Data saved.'));
    
  2. 要在其中检索的控制器中的init消息 消息:

    $this->loadLayout();
    $this->_initLayoutMessages('customer/session');
    $this->_initLayoutMessages('catalog/session');
    $this->renderLayout();`
    
  3. 在模板(.phtml)文件中检索邮件:

    echo $this->getMessagesBlock()->getGroupedHtml();
    

答案 2 :(得分:7)

$messages = Mage::getSingleton('core/session')->getMessages(true);
foreach($messages->getItems() as $message)
{
   // Do something   
   $message->getText();
}

答案 3 :(得分:5)

似乎您要求的内容已存在于Magento中。一旦用户发布了有关产品的评论,默认情况下会显示“您的评论已被接受审核”消息,如app / code / core / Mage / Review / controllers / ProductController.php第188行所述(Magento 1.4。 0.1)

无论如何,如果你想显示消息(通知,成功,错误,警告),只需使用,例如在成功消息的情况下:

<?php
$message = $this->__('Your success message here');
Mage::getSingleton('core/session')->addSuccess($message);
?>

只要页面的模板文件具有$ this-&gt; getMessagesBlock() - &gt; getGroupedHtml()代码,该消息将存储在会话中并自动显示在前端中,这是所有默认情况下的情况Magento附带的phtml页面。所以你真的不必费心。

当然,在上面的示例中,您可以更改

addSuccess($message)

通过 addError($message)addWarning($message)addNotice($message)取决于您希望显示的信息类型。

答案 4 :(得分:3)

由于消息存储在core子数组中,因此您将使用Magento核心消息块来检索它。在您的布局中,您应该能够看到此行(在page.xml中):

<block type="core/messages" name="global_messages" as="global_messages"/>

这意味着页面调用消息块并从该核心数组中检索消息。然后,在布局中,您应该能够看到实际调用输出的行:

<?php echo $this->getChildHtml('global_messages') ?>

这实际上回应了会话中任何消息的正常消息块。如果找不到这些块,请将它们添加进去。如果需要在不同的上下文中获取消息(这可能会影响其他站点操作),请在phtml文件中尝试:

<?php print $this->getLayout()->createBlock('core/messages')->toHtml(); ?>

希望有所帮助!

谢谢, 乔

答案 5 :(得分:3)

假设您要从目录会话中检索成功消息:

然后您必须按如下方式从会话中检索消息:

$messages = Mage::getSingleton('catalog/session')->getMessages(false);

放置false无法清除会话中的邮件收集。如果您想在检索后使用true清除所有邮件。

$messages属于Mage_Core_Model_Message_Collection类型。您可以通过以下方式从中检索所需的消息类型:

$successMessages = $messages->getItemsByType(Mage_Core_Model_Message::SUCCESS);

您可以通过以下方式循环播放这些消息:

foreach ($successMessages as $message) {
   //do whatever you like
}

答案 6 :(得分:2)

我在page.xml中找到了以下块

我在代码中使用了以下两行来获取成功消息,但没有成功。

getChildHtml('global_messages')?&gt; getLayout() - &GT; createBlock( '芯/消息') - &GT; toHtml(); ?&GT;