Magento2通知メッセージ


回答:


32

クラスに、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()

これは、「すべて」がJavaScriptであるワンページチェックアウトでも機能しますか?
ピーディー

どうやら、「page.messages」セクションはcheckout_index_index.xmlファイルを介してチェックアウトから削除されるため、メッセージは表示されません。なぜMagentoがそのように構築したのだろうか。
ピーディー

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はこれらのadd <type>()メソッドを廃止しました。私の答えをご覧ください。
ロバートスタンリー

1
メッセージに問題があります。カートに追加すると成功メッセージが表示されますが、別のページにアクセスするとそのメッセージが表示されます。少なくとも一度表示されたら、どうすれば削除できますか?
ヘンリーブイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.