自定义Magento 2消息仅显示在/结帐/购物车/页面

时间:2017-10-23 12:30:16

标签: javascript php magento magento2 magento2.1

我正在尝试编写一个简单的扩展,利用\Magento\Framework\Message\ManagerInterface在所有页面上添加自定义成功消息。我建立了这个观察者:

<?php
namespace Revolution\MessageCentre\Observer;
use Magento\Framework\Event\ObserverInterface;

class ControllerActionPredispathObserver implements ObserverInterface
{
    /**
     * @var \Magento\Framework\App\RequestInterface
     */
    protected $request;

    /**
     * @var \Magento\Framework\Message\ManagerInterface
     */
    protected $messageManager;

    /**
     * @param \Magento\Framework\App\RequestInterface $request
     * @param \Magento\Framework\Message\ManagerInterface $messageManager
     */
    public function __construct(
        \Magento\Framework\App\RequestInterface $request,
        \Magento\Framework\Message\ManagerInterface $messageManager
    ) {
        $this->request = $request;
        $this->messageManager = $messageManager;
    }

    /**
     * Pre-dispatch frontend controller action
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $requestParams = $this->request->getParams();

        $this->messageManager->addSuccessMessage(__('This is a success message'));
    }
}

观察者监听前端控制器动作predispatch。这是etc/frontend/events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="controller_action_predispatch">
        <observer name="revolution_messagecentre_controller_action_predispatch" instance="MyNamespace\MessageCentre\Observer\ControllerActionPredispathObserver" shared="false" />
    </event>
</config>

它在/checkout/cart/页面上添加成功消息时工作正常,但它只显示在此页面上。我可以在Chrome的网络面板和源代码中看到magento/module-theme/view/frontend/templates/messages.phtml出现在产品页面等页面上,但它是空的,此处没有消息传来。为什么?我已经完成了所有缓存的全面核实,再次尝试禁用浏览器缓存,但仍然没有消息。什么触发了消息的实际呈现,为什么除购物车之外的所有页面都缺少这些消息?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试此扩展。 Custom Cart & Checkout Messages for Magento 2 by FME

此扩展程序使您可以通过向购物车,结帐和订单成功页面添加/显示多个消息来吸引客户。该扩展程序具有超过6种不同的可自定义布局,用于突出显示消息。