これがあなたが探しているものかどうかはわかりませんが、試してみます。
次のようなメッセージを取得できます。
$messages = $this->messageManager->getMessages(true);
どこmessageManager
のインスタンスです\Magento\Framework\Message\ManagerInterface
。
コアでは、これはajax呼び出しに使用され、次のようにJSON応答でエラーメッセージを返します(\Magento\Catalog\Controller\Adminhtml\Category\Move
)。
$block = $this->layoutFactory->create()->getMessagesBlock();
...
$block->setMessages($this->messageManager->getMessages(true));
$resultJson = $this->resultJsonFactory->create();
return $resultJson->setData([
'messages' => $block->getGroupedHtml(),
'error' => $error
]);
出力を伴うアクションの場合、何もすべきではありません(私は思う)。モジュールのdefault.xml
レイアウトファイルには、メッセージを処理するMagento_Theme
このブロック<block class="Magento\Framework\View\Element\Messages" name="messages" as="messages" template="Magento_Theme::messages.phtml"/>
が既に含まれています。
[サイドノート]:を
使用しないでください$this->_objectManager->get('Magento\Framework\Escaper')->escapeHtml($message)
。コンストラクタにのインスタンスを注入し、Magento\Framework\Escaper
それを使用します。