So zeigen Sie die Erfolgsmeldung in Sitzung Magento2 an


12

In Magento 1 kann ich das so machen

$session            = Mage::getSingleton('core/session');
$session->addSuccess($this->__('Your Request has been received. One of our sales representatives will contact you shortly.'));

Gleiches, wie kann ich es in Magento2 tun? Versuchte dies, aber nicht funktioniert.


Sie können die Werte nach Sitzung festlegen und abrufen. Möchten Sie nur die Sitzung verwenden? Haben Sie versucht, Message \ ManagerInterface $ messageManager
Krishna ijjada

Ich habe es versucht, aber kein Glück.
Naveenbos

Möchten Sie nur die Sitzung verwenden?
Krishna Ijjada

Ich versuche, eine Erfolgsmeldung anzuzeigen, nachdem ich das Formular erfolgreich gesendet habe.
Naveenbos

@ Naveen Überprüfen Sie meine Antwort hinzugefügt
Krishna ijjada

Antworten:


20

In Magento 2 können wir dies in zwei Schritten erreichen:

Zuerst müssen wir die Nachricht von Ihrem Modul aus wie folgt an 'messageManager' zuweisen:

$this->messageManager->addSuccess(__('This is a success message.'));

Zweitens müssen wir einen Platzhalter für die Nachricht über die im Modul verwendete Frontend-Layout-XML zuweisen, wie unten im <body>Tag angegeben:

<referenceContainer name="page.messages">
        <block class="Magento\Framework\View\Element\Template" name="ajax.message.placeholder" template="Magento_Theme::html/messages.phtml"/>
        <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages" template="Magento_Theme::messages.phtml"/>
</referenceContainer>

Bei der obigen Layoutaktualisierung wird die Nachrichtenvorlage des Magento verwendet, um die Nachrichten anzuzeigen.


, Wie füge ich diesen Referenzcontainer im Backend hinzu
Jaisa

Wird das XML hier wirklich benötigt?
Wouter

10

Magento2 verwendet MessageInterface, um alle Nachrichten hinzuzufügen. Verwenden Sie den folgenden Code, um Nachrichten anzuzeigen

Magento Message Framework-Klasse

\Magento\Framework\Message\ManagerInterface

Verwenden Sie den folgenden Code in Ihrer Datei, um Nachrichten hinzuzufügen.

protected _messageManager;

public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Message\ManagerInterface $messageManager) {
        parent::__construct($context);
        $this->_messageManager = $messageManager;
    }

Fügen Sie dann die folgenden Funktionen in Ihre Methoden ein, um Nachrichten anzuzeigen:

$this->_messageManager->addError(__("Error Message"));
$this->_messageManager->addWarning(__("Warning"));
$this->_messageManager->addNotice(__("Notice"));
$this->_messageManager->addSuccess(__("Success Message"));

Ich hoffe, dies wird Ihnen helfen, Ihr Problem zu beheben.



3

Sie können den folgenden Code ausprobieren, um Erfolgs- oder Fehlermeldungen hinzuzufügen.

$this->messageManager war in der Elternklasse und rief von

\ Magento \ Framework \ App \ Action \ Action

$ this-> messageManager = $ context-> getMessageManager ();

class Post extends \Magento\Framework\App\Action\Action
{

    public function __construct(
        \Magento\Framework\App\Action\Context $context
    ) {
        parent::__construct($context);
    }
    public function execute()
    {

$data = $this->getRequest()->getPostValue();

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();       
$question = $objectManager->create('Myvendor\Mymodule\Model\Feedback');

/****** set your data *********/
$question->setData($data);
$question->save();

$this->messageManager->addSuccess( __('Thanks for your valuable feedback.') );

/* ***** OR

$this->messageManager->addError('There is something went wrong');
$this->_redirect('*/');
return;
    }

Sie können Nachrichten zuweisen messageManager

$this->_messageManager->addError(__("Error"));
$this->_messageManager->addWarning(__("Warning"));
$this->_messageManager->addNotice(__("Notice"));
$this->_messageManager->addSuccess(__("Success"));

Weitere Informationen zum Anzeigen von Benachrichtigungsnachrichten finden Sie hier

Hoffe das hilft.


1
Verwenden Sie den Objektmanager nicht direkt.
Jisse Reitsma

2

Benutzerdefinierte Layoutdatei

<referenceContainer name="page.messages">
        <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
 </referenceContainer>

Verwenden Sie dies in Ihrer benutzerdefinierten Layoutdatei, um die Fehlermeldung und die Erfolgsmeldung für Ihre benutzerdefinierte Vorlagendatei anzuzeigen.

Benutzerdefinierte Controller-Datei

 try{
        $school_model->save();
        $this->messageManager->addSuccess(
                    __('Thanks for Submission'));
    }catch (\Exception $e) {
        $this->messageManager->addError(
                    __('We can\'t process your request right now. Sorry, that\'s all we know.'));   
    }
    $this->_redirect('*/*/');
    return;

Wenn Sie eine Code-Antwort eingeben, erklären Sie bitte kurz, was dieser Code tut und wo er hingehört. Antworten mit Code, aber ohne Erklärung sind selten nützlich.
Siarhey Uchukhlebau

@ Jeeva Chezhiyan, ich muss dies im Backend hinzufügen, wo ich den obigen Referenzcontainer hinzufügen muss
Jaisa

Ich bin TGE - Controller mit Ajax anrufen, aber ich will nicht Antwort Erfolgsstatus zu js schicken, ich muss nur meine Meldung Messagemanager verwenden, ist dies möglich
JAISA
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.