Pesan Pemberitahuan Magento2

19

Di Magento2, bagaimana kita mencetak data input ke dalam pesan notifikasi untuk - Kesalahan - Sukses - Peringatan - Pemberitahuan

huzefam
sumber

Jawaban:

33

Di kelas Anda, suntikkan kelas Message ManagerInterface:

__construct(\Magento\Framework\Message\ManagerInterface $messageManager) {
    $this->messageManager = $messageManager;
}

Catatan, Magento memiliki metode yang sudah tidak digunakan lagi :

$this->messageManager->addSuccess()
$this->messageManager->addError()
$this->messageManager->addWarning() 
$this->messageManager->addNotice()

Jadi, alih-alih, Anda harus menggunakan:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()
Robert Stanley
sumber
Apakah ini juga berfungsi selama checkout di tempat, di mana "semuanya" adalah javascript?
pipis
Rupanya bagian "page.messages" dihapus dari checkout melalui file checkout_index_index.xml, sehingga pesan tidak akan ditampilkan di sana. Saya bertanya-tanya mengapa Magento membangunnya seperti itu.
pipis
17

Jika Anda menggunakan controller, maka kemungkinan besar Anda telah memperpanjang

\Magento\Framework\App\Action\Action

https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/App/Action/Action.php

Ini menyuntikkan \Magento\Framework\Message\ManagerInterfaceobjek dalam __constructfungsinya menggunakan \Magento\Framework\App\Action\Context $contextobjek

Jadi untuk menampilkan pesan,

  1. Sukses -

    $ this-> messageManager-> addSuccess (__ ('Ini adalah pesan kesuksesan Anda.'));

  2. Kesalahan -

    $ this-> messageManager-> addError (__ ('Ini adalah pesan kesalahan Anda.'));

  3. Peringatan -

    $ this-> messageManager-> addWarning (__ ('Ini pesan peringatan Anda.'));

  4. Memperhatikan

    $ this-> messageManager-> addNotice (__ ('Ini adalah pesan pemberitahuan Anda.'));

Di dalam kelas-kelas lain

class Dummy
{

    /**
     * @var \Magento\Framework\Message\ManagerInterface
     */
   private $messageManager;

   public function __construct(\Magento\Framework\Message\ManagerInterface $messageManager)
   {
       $this->messageManager = $messageManager;
   }

  public function someFunction()
  {
    $this->messageManager->addSuccess('Add your success message');
  }

}

Sejauh yang saya perhatikan, Magento2 telah menghapus pesan pemberitahuan khusus kelas sesi.

huzefam
sumber
1
Magento telah mencabut metode add <type> () ini. Lihat jawaban saya.
Robert Stanley
1
Saya memiliki masalah dengan pesan, ketika saya menambahkan ke troli itu menunjukkan pesan yang berhasil tetapi ketika saya mengakses ke halaman lain itu masih menunjukkan pesan itu. Bagaimana saya bisa menghapusnya ketika itu muncul setidaknya satu kali?
Henry Bui