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.

Naveenbos
quelle
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.

Jino
quelle
, 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.

Rahul Anand
quelle
Welche
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.

Krishna ijjada
quelle
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;
Jeeva Chezhiyan
quelle
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