Magento2-Benachrichtigungsnachrichten

19

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

huzefam
quelle

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()
Robert Stanley
quelle
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.

huzefam
quelle
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