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.