Messages de notification Magento2

19

Dans Magento2, comment imprimer les données d'entrée dans les messages de notification pour - Erreur - Succès - Avertissement - Remarque

huzefam
la source

Réponses:

33

Dans votre classe, injectez la classe Message ManagerInterface:

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

Remarque, Magento a des méthodes obsolètes :

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

À la place, vous devez utiliser:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()
Robert Stanley
la source
Est-ce que cela fonctionnerait également lors du paiement sur une page, où "tout" est javascript?
peedee
Apparemment, la section "page.messages" est supprimée de la caisse via le fichier checkout_index_index.xml, donc les messages n'y seront pas affichés. Je me demande pourquoi Magento l'a construit de cette façon.
peedee
17

Si vous utilisez un contrôleur, alors vous avez probablement étendu

\Magento\Framework\App\Action\Action

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

Cela injecte l' \Magento\Framework\Message\ManagerInterfaceobjet dans sa __constructfonction en utilisant l' \Magento\Framework\App\Action\Context $contextobjet

Donc pour afficher un message,

  1. Succès -

    $ this-> messageManager-> addSuccess (__ ('Ceci est votre message de réussite.'));

  2. Erreur -

    $ this-> messageManager-> addError (__ ('Ceci est votre message d'erreur.'));

  3. Avertissement -

    $ this-> messageManager-> addWarning (__ ('Ceci est votre message d'avertissement.'));

  4. Remarquer

    $ this-> messageManager-> addNotice (__ ('Ceci est votre message de notification.'));

À l'intérieur d'autres 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');
  }

}

Donc, pour autant que je l'ai remarqué, Magento2 a supprimé les messages de notification spécifiques à la classe de session.

huzefam
la source
1
Magento a déprécié ces méthodes add <type> (). Voir ma réponse.
Robert Stanley
1
J'ai un problème avec le message, lorsque j'ajoute au panier, il affiche un message de réussite, mais lorsque j'accède à une autre page, il affiche toujours ce message. Comment puis-je le supprimer lorsqu'il apparaît au moins une fois?
Henry Bui