Magento2-Benachrichtigungsnachrichten


19

Wie drucken wir in Magento2 die Eingabedaten in Benachrichtigungsmeldungen für - Fehler - Erfolg - Warnung - Hinweis

Antworten:


32

Fügen Sie in Ihrer Klasse die Message ManagerInterface-Klasse ein:

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

Beachten Sie, dass Magento Methoden nicht mehr unterstützt :

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

Verwenden Sie stattdessen:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()

Funktioniert das auch während der Onepage-Prüfung, bei der "alles" Javascript ist?
Peedee

Anscheinend wird der Abschnitt "page.messages" über die Datei checkout_index_index.xml aus dem Checkout entfernt, sodass Nachrichten dort nicht angezeigt werden. Ich frage mich, warum Magento es so gebaut hat.
Peedee

17

Wenn Sie einen Controller verwenden, haben Sie ihn höchstwahrscheinlich erweitert

\Magento\Framework\App\Action\Action

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

Dies fügt das \Magento\Framework\Message\ManagerInterfaceObjekt in seiner __constructFunktion unter Verwendung des \Magento\Framework\App\Action\Context $contextObjekts ein

Also, um eine Nachricht anzuzeigen,

  1. Erfolg -

    $ this-> messageManager-> addSuccess (__ ('Dies ist Ihre Erfolgsmeldung.'));

  2. Error -

    $ this-> messageManager-> addError (__ ('Dies ist Ihre Fehlermeldung.'));

  3. Warnung -

    $ this-> messageManager-> addWarning (__ ('Dies ist Ihre Warnmeldung.'));

  4. Beachten

    $ this-> messageManager-> addNotice (__ ('Dies ist Ihre Kündigungsnachricht.'));

In anderen Klassen

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');
  }

}

Soweit ich bemerkt habe, hat Magento2 sitzungsklassenspezifische Benachrichtigungsmeldungen entfernt.


1
Magento hat diese add <type> () -Methoden verworfen. Siehe meine Antwort.
Robert Stanley

1
Ich habe ein Problem mit der Nachricht. Wenn ich sie in den Warenkorb lege, wird eine Erfolgsmeldung angezeigt. Wenn ich jedoch auf eine andere Seite zugreife, wird diese Meldung weiterhin angezeigt. Wie kann ich es entfernen, wenn es mindestens einmal angezeigt wird?
Henry Bui
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.