Cara menampilkan pesan sukses di sesi Magento2

12

Di Magento 1 saya bisa melakukannya seperti ini

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

Hal yang sama bagaimana saya bisa melakukannya di Magento2? Mencoba ini tetapi tidak berhasil.

Naveenbos
sumber
Anda dapat mengatur dan mendapatkan nilai berdasarkan sesi, apakah Anda hanya ingin menggunakan sesi?
Sudahkah
Saya sudah mencoba ini tetapi tidak berhasil.
Naveenbos
Anda hanya ingin menggunakan sesi?
Krishna ijjada
Saya mencoba menampilkan pesan yang berhasil setelah mengirimkan formulir dengan sukses.
Naveenbos
@ Naveen Periksa jawaban saya ditambahkan
Krishna ijjada

Jawaban:

20

Di Magento 2, kita bisa melakukan ini dalam dua langkah:

Pertama, kami perlu menetapkan pesan ke 'messageManager' dari modul Anda seperti di bawah ini:

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

Kedua, kita perlu menetapkan placeholder untuk pesan melalui tata letak frontend xml yang digunakan dalam modul seperti yang diberikan di bawah di dalam <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>

Pembaruan tata letak di atas akan menggunakan templat pesan magento untuk menampilkan pesan.

Jino
sumber
, Bagaimana saya menambahkan wadah referensi ini di backend
Jaisa
Apakah XML benar-benar diperlukan di sini?
Wouter
10

Magento2 menggunakan MessageInterface untuk menambahkan semua pesan, silakan gunakan kode di bawah ini untuk menampilkan Pesan

Kelas Kerangka Pesan Magento

\Magento\Framework\Message\ManagerInterface

gunakan kode di bawah ini dalam file Anda untuk menambahkan pesan,

protected _messageManager;

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

lalu tambahkan fungsi di bawah ini dalam metode Anda untuk menampilkan pesan:

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

Saya harap ini akan membantu Anda memperbaiki masalah Anda.

Rahul Anand
sumber
file mana yang ingin saya tambahkan kode ini
Naveenbos
3

Anda dapat mencoba kode di bawah ini untuk menambahkan Pesan sukses atau kesalahan.

$this->messageManager berada di panggilan kelas induk dari

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

Anda dapat menetapkan pesan untuk messageManager

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

Anda dapat menemukan beberapa informasi lebih lanjut tentang cara Menampilkan pesan notifikasi

Semoga ini membantu.

Krishna ijjada
sumber
1
Jangan gunakan Object Manager secara langsung.
Jisse Reitsma
2

File tata letak khusus

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

Gunakan ini di file tata letak khusus Anda untuk menampilkan pesan Kesalahan dan pesan Sukses untuk file template khusus Anda.

File Pengontrol Kustom

 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
sumber
Jika Anda memposting kode sebagai jawaban, harap setidaknya jelaskan secara singkat apa yang dilakukan kode ini dan di mana kode itu berada. Jawaban dengan kode tetapi tidak ada penjelasan yang jarang bermanfaat.
Siarhey Uchukhlebau
@ Jeeva Chezhiyan, saya perlu menambahkan ini di backend, di mana saya perlu menambahkan kontainer referensi di atas
Jaisa
saya memanggil tge controller menggunakan ajax, tetapi saya tidak ingin mengirim status sukses respons ke js, saya hanya perlu menunjukkan pesan saya menggunakan messagemanager, apakah ini mungkin
Jaisa