Custom Magento 2 сообщения Только Показать в / Оформить заказ / Корзина / Страница

Я пытаюсь написать простое расширение, которое использует \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'));
    }
}

Наблюдатель прислушивается к предиспетчеру действий контроллера внешнего интерфейса. Здесь 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 появляется на страницах, подобных странице продукта, но она пуста, здесь нет сообщений. Зачем? Я сделал полный анализ всех кешей, попробовал еще раз с отключенным кешем браузера, но сообщений до сих пор нет. Что вызывает фактическую визуализацию сообщений, и почему это отсутствует на всех страницах, кроме корзины? Заранее спасибо!

0 ответов

Вы можете попробовать это расширение. Пользовательские сообщения о корзине и кассе для Magento 2 от FME

Это расширение позволяет вам привлекать клиентов, добавляя / отображая несколько сообщений в корзину, оформить заказ и страница заказа успешно. Расширение поставляется с более чем 6 различными настраиваемыми макетами для выделения сообщений.

Другие вопросы по тегам