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

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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.