如何使用Magento 2 Complex Messages
Magento 針對顯示通知、警示、頁面錯誤等訊息顯示時機,提供簡單的框架讓開發者使用,大多時間在頁面上顯示的訊息,只需要使用 Magento\Framework\Message\ManagerInterface
$this->messageManager->addNoticeMessage($message);
滿容易的對吧?但如果想要將超連結或其他HTML語法加入在訊息中時,這時這些訊息僅會為純文字顯示。
為了在訊息中加入HTML語法、超連結或其他變數,我們必須仰賴Magento內建的complex message system,大致上運作的方式是相同的,但需要一些額外的配置,才能正常使用。
首先你必須要將以下程式碼加入進你的模組 di.xml 中,以便定義一個複雜的訊息類型 (complex message type),如此一來可告訴Magento我們有個透過 ‘sampleComplexMessage’ 辨認的複雜訊息 (complex message),且其模板為 ‘complex-message.phtml’。
<type name="Magento\Framework\View\Element\Message\MessageConfigurationsPool"> <arguments> <argument name="configurationsMap" xsi:type="array"> <item name=“sampleComplexMessage" xsi:type="array"> <item name="renderer" xsi:type="const">\Magento\Framework\View\Element\Message\Renderer\BlockRenderer::CODE</item> <item name="data" xsi:type="array"> <item name="template" xsi:type="string">AstralWeb_Example::messages/complex/complex-message.phtml</item> </item> </item> </argument> </arguments> </type>
緊接著我們需要建立 complex-message.phtml 的模板,並且此訊息 (complex message) 將可以從多處Session來訪問,你不會被侷限於使用此模板來顯示訊息。
<?= $block->escapeHtml(__( 'Please <a href="%1">click here</a> and do something’, $block->getData('url') ), ['a']); ?>
當你已建立完成後,你可以在任何地方操作加入以下將複雜訊息 (complex message) 程式碼:
$this->messageManager->addComplexSuccessMessage( 'sampleComplexMessage', [ 'url' => $url ] );
這僅僅是個範例,複雜訊息 (complex message) 並不限於使用超連結 。我們可用它們來開發獨特的辨識器、顯示特定圖示、或儲存一般訊息中無法解析的其他資訊。
以上為本次針對使用Magento2 Complex Messages的分享,想收到更多相關資訊請務必訂閱我們的電子報,以及追蹤歐斯瑞臉書粉絲團和Instagram唷!
我要留言