Magento2 Уведомления

19

В Magento2, как мы печатаем входные данные в уведомлениях для - Ошибка - Успех - Предупреждение - Уведомление

huzefam
источник

Ответы:

33

В своем классе добавьте класс Message ManagerInterface:

__construct(\Magento\Framework\Message\ManagerInterface $messageManager) {
    $this->messageManager = $messageManager;
}

Обратите внимание, Magento устарел методы :

$this->messageManager->addSuccess()
$this->messageManager->addError()
$this->messageManager->addWarning() 
$this->messageManager->addNotice()

Поэтому вместо этого вы должны использовать:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()
Роберт Стэнли
источник
Будет ли это работать во время одностраничного оформления заказа, где «все» - это JavaScript?
Пиди
Очевидно, что раздел "page.messages" удаляется из оформления через файл checkout_index_index.xml, поэтому сообщения там не будут отображаться. Интересно, почему Magento построил это так.
peedee
17

Если вы используете контроллер, то, скорее всего, вы расширили

\Magento\Framework\App\Action\Action

https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/App/Action/Action.php

Это вводит \Magento\Framework\Message\ManagerInterface объект в его __constructфункцию, используя \Magento\Framework\App\Action\Context $contextобъект

Таким образом, чтобы отобразить сообщение,

  1. Успех -

    $ this-> messageManager-> addSuccess (__ ('Это ваше сообщение об успехе.'));

  2. Ошибка -

    $ this-> messageManager-> addError (__ ('Это ваше сообщение об ошибке.'));

  3. Предупреждение -

    $ this-> messageManager-> addWarning (__ ('Это ваше предупреждающее сообщение.'));

  4. уведомление

    $ this-> messageManager-> addNotice (__ ('Это ваше уведомление.'));

Внутри других классов

class Dummy
{

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

   public function __construct(\Magento\Framework\Message\ManagerInterface $messageManager)
   {
       $this->messageManager = $messageManager;
   }

  public function someFunction()
  {
    $this->messageManager->addSuccess('Add your success message');
  }

}

Итак, насколько я заметил, Magento2 удалил специфичные для класса сеанса уведомления.

huzefam
источник
1
Magento не поддерживает эти методы add <type> (). Смотри мой ответ.
Роберт Стэнли,
1
У меня проблема с сообщением, когда я добавляю в корзину сообщение об успешном завершении, но при доступе к другой странице оно все равно показывает это сообщение. Как я могу удалить его, когда он показывает хотя бы раз?
Генри Буй