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

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()

¿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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.