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.