Come mostrare il messaggio di successo nella sessione Magento2


12

In magento 1 posso farlo in questo modo

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

Stessa cosa come posso farlo in Magento2? Ho provato questo ma non funziona.


Puoi impostare e ottenere i valori per sessione, vuoi usare solo la sessione? hai provato Message \ ManagerInterface $ messageManager
Krishna ijjada il

ho provato questo, ma senza fortuna.
Naveenbos,

vuoi usare solo la sessione?
Krishna ijjada,

Sto cercando di mostrare un messaggio di successo dopo aver inviato il modulo con successo.
Naveenbos,

@ Naveen Controlla la mia risposta aggiunta
Krishna ijjada,

Risposte:


20

In Magento 2, possiamo farlo in due passaggi:

Innanzitutto, dobbiamo assegnare il messaggio a "messageManager" dal tuo modulo come di seguito:

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

In secondo luogo, dobbiamo assegnare un segnaposto per il messaggio tramite il layout frontend xml utilizzato nel modulo come indicato di seguito all'interno del <body>tag:

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

Il precedente aggiornamento del layout utilizzerà il modello di messaggio di Magento per visualizzare i messaggi.


, Come aggiungere questo contenitore di riferimento nel backend
Jaisa

L'XML è davvero necessario qui?
Wouter,

10

Magento2 sta usando MessageInterface per aggiungere tutti i messaggi, per favore usa il codice qui sotto per mostrare Messaggi

Classe Magento Message Framework

\Magento\Framework\Message\ManagerInterface

usa il codice qui sotto nel tuo file per aggiungere messaggi,

protected _messageManager;

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

e quindi aggiungi le funzioni seguenti nei tuoi metodi per mostrare i messaggi:

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

Spero che questo ti possa aiutare a risolvere il problema.


quale file voglio aggiungere questo codice
Naveenbos

3

Puoi provare sotto il codice per aggiungere messaggi di successo o errore.

$this->messageManager era nella classe genitore chiamando da

\ Magento \ Framework \ App \ azione \ Azione

$ 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;
    }

È possibile assegnare messaggi a messageManager

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

Puoi trovare ulteriori informazioni su come visualizzare i messaggi di notifica

Spero che sia di aiuto.


1
Non utilizzare direttamente l'Object Manager.
Jisse Reitsma,

2

File di layout personalizzato

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

Utilizzare questo nel file di layout personalizzato per mostrare il messaggio di errore e il messaggio Success per il file del modello personalizzato.

File del controller personalizzato

 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;

Se pubblichi un codice come risposta, ti preghiamo almeno di spiegare brevemente cosa sta facendo questo codice e dove appartiene. Risposte con codice ma nessuna spiegazione sono raramente utili.
Siarhey Uchukhlebau,

@Jeeva Chezhiyan, ho bisogno di aggiungere questo nel back-end, dove devo aggiungere il contenitore di riferimento sopra
Jaisa

sto chiamando controller tge usando ajax, ma non voglio inviare lo stato di successo della risposta a js, ho solo bisogno di mostrare il mio messaggio usando messagemanager, è possibile
Jaisa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.