Pesan Pemberitahuan Magento2


19

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

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

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.


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