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.


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.


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


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.


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;

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.