Mensajes de notificación de Magento2

19

En Magento2, ¿cómo imprimimos los datos de entrada en mensajes de notificación para - Error - Éxito - Advertencia - Aviso

huzefam
fuente

Respuestas:

33

En su clase, inyecte la clase Message ManagerInterface:

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

Tenga en cuenta que Magento tiene métodos obsoletos :

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

Entonces, en su lugar, debe usar:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()
Robert Stanley
fuente
¿Funcionaría esto también durante el pago de una página, donde "todo" es javascript?
peedee
Aparentemente, la sección "page.messages" se elimina del pago a través del archivo checkout_index_index.xml, por lo que los mensajes no se mostrarán allí. Me pregunto por qué Magento lo construyó de esa manera.
peedee
17

Si está utilizando un controlador, lo más probable es que haya extendido

\Magento\Framework\App\Action\Action

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

Esto inyecta el \Magento\Framework\Message\ManagerInterfaceobjeto en su __constructfunción usando el \Magento\Framework\App\Action\Context $contextobjeto

Entonces, para mostrar un mensaje,

  1. Éxito

    $ this-> messageManager-> addSuccess (__ ('Este es su mensaje de éxito'));

  2. Error

    $ this-> messageManager-> addError (__ ('Este es su mensaje de error.'));

  3. Advertencia -

    $ this-> messageManager-> addWarning (__ ('Este es su mensaje de advertencia'));

  4. darse cuenta

    $ this-> messageManager-> addNotice (__ ('Este es su mensaje de aviso.'));

Dentro de otras clases

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

}

Por lo que he notado, Magento2 ha eliminado los mensajes de notificación específicos de la clase de sesión.

huzefam
fuente
1
Magento ha desaprobado estos métodos add <type> (). Mira mi respuesta.
Robert Stanley
1
Tengo un problema con el mensaje, cuando lo agrego al carrito, muestra un mensaje de éxito, pero cuando accedo a otra página aún muestra ese mensaje. ¿Cómo puedo eliminarlo cuando se muestra al menos una vez?
Henry Bui