Повідомлення Magento2


19

Як у Magento2 як надрукувати вхідні дані у повідомлення-повідомлення для - Помилка - Успіх - Попередження - Повідомлення

Відповіді:


33

У свій клас введіть клас Manager 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?
peedee

Мабуть, розділ "page.messages" видаляється з каси через файл checkout_index_index.xml, тому повідомлення там не відображатимуться. Цікаво, чому саме Мадженто побудував саме так.
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 видалив специфічні повідомлення щодо класу сеансу.


1
Magento заборонив ці методи add <type> (). Дивіться мою відповідь.
Роберт Стенлі

1
У мене виникають проблеми із повідомленням, коли я додаю в кошик, воно показує повідомлення про успіх, але коли я отримую доступ до іншої сторінки, воно все ще показує це повідомлення. Як я можу його видалити, коли він відображається хоча б раз?
Генрі Буй
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.