Tin nhắn thông báo Magento2


19

Trong Magento2, làm cách nào để in dữ liệu đầu vào thành thông báo thông báo cho - Lỗi - Thành công - Cảnh báo - Thông báo

Câu trả lời:


32

Trong lớp của bạn, hãy nhập lớp Message ManagerInterface:

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

Lưu ý, Magento có các phương pháp không dùng nữa :

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

Vì vậy, thay vào đó bạn nên sử dụng:

$this->messageManager->addSuccessMessage()
$this->messageManager->addErrorMessage()
$this->messageManager->addWarningMessage() 
$this->messageManager->addNoticeMessage()

Điều này cũng sẽ hoạt động trong quá trình kiểm tra onepage, trong đó "mọi thứ" là javascript?
peedee

Rõ ràng phần "page.messages" bị xóa khỏi thanh toán thông qua tệp checkout_index_index.xml, vì vậy các thông báo sẽ không được hiển thị ở đó. Tôi tự hỏi tại sao Magento xây dựng nó theo cách đó.
peedee

17

Nếu bạn đang sử dụng bộ điều khiển, thì rất có thể bạn đã gia hạn

\Magento\Framework\App\Action\Action

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

Điều này tiêm \Magento\Framework\Message\ManagerInterfaceđối tượng trong __constructchức năng của nó bằng cách sử dụng \Magento\Framework\App\Action\Context $contextđối tượng

Vì vậy, để hiển thị một tin nhắn,

  1. Sự thành công -

    $ this-> messageManager-> addSuccess (__ ('Đây là thông điệp thành công của bạn.'));

  2. Lỗi -

    $ this-> messageManager-> addError (__ ('Đây là thông báo lỗi của bạn.'));

  3. Cảnh báo -

    $ this-> messageManager-> addWarning (__ ('Đây là thông điệp cảnh báo của bạn.'));

  4. Để ý

    $ this-> messageManager-> addNotice (__ ('Đây là tin nhắn thông báo của bạn.'));

Bên trong các lớp khác

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');
  }

}

Vì vậy, theo như tôi đã nhận thấy, Magento2 đã loại bỏ các tin nhắn thông báo cụ thể của lớp phiên.


1
Magento đã không dùng các phương thức add <type> () này. Xem câu trả lời của tôi.
Robert Stanley

1
Tôi gặp vấn đề với tin nhắn, khi tôi thêm vào giỏ hàng, nó hiển thị thông báo thành công nhưng khi tôi truy cập vào một trang khác thì nó vẫn hiển thị thông báo đó. Làm thế nào tôi có thể loại bỏ nó khi nó hiển thị ít nhất một lần?
Henry Bùi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.