ข้อความแจ้งเตือนของ Magento2


19

ใน Magento2 เราจะพิมพ์ข้อมูลอินพุตอย่างไรในข้อความแจ้งเตือนสำหรับ - ข้อผิดพลาด - สำเร็จ - คำเตือน - ประกาศ

คำตอบ:


33

ในชั้นเรียนของคุณฉีดคลาส Message ManagerInterface:

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

หมายเหตุ Magento มีวิธีการที่ไม่สนับสนุน :

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

ดังนั้นคุณควรใช้:

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

สิ่งนี้จะใช้งานได้ในระหว่างการชำระเงิน onepage ซึ่ง "ทุกอย่าง" เป็น javascript หรือไม่
peedee

เห็นได้ชัดว่าส่วน "page.messages" จะถูกลบออกจากการชำระเงินผ่านไฟล์ checkout_index_index.xml ดังนั้นข้อความจะไม่ปรากฏที่นั่น ฉันสงสัยว่าทำไม Magento ถึงสร้างมันขึ้นมาอย่างนั้น
peedee

17

หากคุณกำลังใช้คอนโทรลเลอร์อยู่บางทีคุณอาจจะขยาย

\Magento\Framework\App\Action\Action

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

สิ่งนี้จะแทรก\Magento\Framework\Message\ManagerInterfaceวัตถุใน__constructฟังก์ชั่นโดยใช้\Magento\Framework\App\Action\Context $contextวัตถุ

ดังนั้นเพื่อแสดงข้อความ

  1. สำเร็จ -

    $ this-> messageManager-> addSuccess (__ ('นี่คือข้อความสำเร็จของคุณ'))

  2. ข้อผิดพลาด -

    $ this-> messageManager-> addError (__ ('นี่คือข้อความแสดงข้อผิดพลาดของคุณ'))

  3. คำเตือน -

    $ this-> messageManager-> addWarning (__ ('นี่คือข้อความเตือนของคุณ'))

  4. แจ้งให้ทราบ

    $ this-> messageManager-> addNotice (__ ('นี่คือข้อความแจ้งเตือน'))

ในชั้นเรียนอื่น ๆ

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

}

ดังนั้นเท่าที่ฉันสังเกตเห็น Magento2 ได้ลบข้อความแจ้งเตือนเฉพาะชั้นเรียน


1
Magento เลิกใช้วิธีการเพิ่ม <type> () เหล่านี้ ดูคำตอบของฉัน
Robert Stanley

1
ฉันมีปัญหากับข้อความเมื่อฉันเพิ่มในรถเข็นมันแสดงข้อความสำเร็จ แต่เมื่อฉันเข้าถึงหน้าอื่นก็ยังคงแสดงข้อความนั้น ฉันจะลบออกเมื่อมันแสดงขึ้นอย่างน้อยหนึ่งครั้งได้อย่างไร
เฮนรี่ Bui
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.