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.