Mensagens de notificação do Magento2

19

No Magento2, como imprimimos os dados de entrada em mensagens de notificação para - Erro - Sucesso - Aviso - Aviso

huzefam
fonte

Respostas:

33

Na sua classe, injete a classe Message ManagerInterface:

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

Observe que o Magento descontinuou os métodos :

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

Então, em vez disso, você deve usar:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()
Robert Stanley
fonte
Isso também funcionaria durante o checkout de uma página, onde "tudo" é javascript?
peedee
Aparentemente, a seção "page.messages" é removida do checkout pelo arquivo checkout_index_index.xml, para que as mensagens não sejam mostradas lá. Eu me pergunto por que o Magento construiu dessa maneira.
Peedee
17

Se você estiver usando um controlador, provavelmente você ampliou

\Magento\Framework\App\Action\Action

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

Isso injeta o \Magento\Framework\Message\ManagerInterfaceobjeto em sua __constructfunção usando o \Magento\Framework\App\Action\Context $contextobjeto

Então, para exibir uma mensagem,

  1. Sucesso -

    $ this-> messageManager-> addSuccess (__ ('Esta é a sua mensagem de sucesso.'));

  2. Erro -

    $ this-> messageManager-> addError (__ ('Esta é a sua mensagem de erro.'));

  3. Atenção -

    $ this-> messageManager-> addWarning (__ ('Esta é a sua mensagem de aviso.'));

  4. Aviso prévio

    $ this-> messageManager-> addNotice (__ ('Esta é a sua mensagem de aviso.'));

Dentro de outras classes

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');
  }

}

Até onde eu notei, o Magento2 removeu as mensagens de notificação específicas da classe da sessão.

huzefam
fonte
1
O Magento descontinuou esses métodos add <type> (). Veja minha resposta.
Robert Stanley
1
Tenho um problema com a mensagem, quando adiciono ao carrinho, ela mostra uma mensagem de sucesso, mas quando eu acesso outra página, ela ainda mostra essa mensagem. Como posso removê-lo quando ele é exibido pelo menos uma vez?
Henry Bui 11/01