如何创建自定义管理员通知
-
29-09-2020 - |
题
我想为正在开发的模块创建自定义管理员通知消息,如下图所示。我希望通知在所有管理页面中保持可见,直到满足特定条件。
关于这个主题还有另一个 线程,但我找不到如何获取实现\\Magento\\Framework otification\\MessageInterface的模型类来执行。线程作者提到需要对 Magento_AdminNotification 的依赖。
这是在 di.xml 文件上实现的吗?更详细的解释将非常有帮助。
解决方案
我想出了怎么做。我在错误的目录上编写了 di.xml 文件。
要运行模块的自定义通知类,您需要使用以下代码创建文件 VendorName/ModuleName/etc/adminhtml/di.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Notification\MessageList">
<arguments>
<argument name="messages" xsi:type="array">
<item name="yourClassName" xsi:type="string">VendorName\ModuleName\Model\System\Message\YourClassName</item>
</argument>
</arguments>
</type>
</config>
然后您必须使用以下代码创建 VendorName\ModuleName\Model\System\Message\YourClassName.php
类文件:
<?php
namespace VendorName\ModuleName\Model\System\Message;
class YourClassName implements \Magento\Framework\Notification\MessageInterface
{
public function getIdentity()
{
// Retrieve unique message identity
return 'identity';
}
public function isDisplayed()
{
// Return true to show your message, false to hide it
return true;
}
public function getText()
{
// Retrieve message text
return 'Notification message text goes here';
}
public function getSeverity()
{
// Possible values: SEVERITY_CRITICAL, SEVERITY_MAJOR, SEVERITY_MINOR, SEVERITY_NOTICE
return self::SEVERITY_MAJOR;
}
}
其他提示
Ktpl/Ordermanagement/etc/adminhtml/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Notification\MessageList">
<arguments>
<argument name="messages" xsi:type="array">
<item name="user_view_count" xsi:type="string">Ktpl\Ordermanagement\Model\System\Message\Userviewcount</item>
</argument>
</arguments>
</type>
</config>
Ktpl\\Ordermanagement\\Model\\System\\Message\\Userviewcount.php
<?php
namespace Ktpl\Ordermanagement\Model\System\Message;
class Userviewcount implements \Magento\Framework\Notification\MessageInterface
{
/**
* Message identity
*/
const MESSAGE_IDENTITY = 'custom_system_message';
/**
* Retrieve unique system message identity
*
* @return string
*/
public function getIdentity()
{
return md5(self::MESSAGE_IDENTITY);
}
/**
* Check whether the system message should be shown
*
* @return bool
*/
public function isDisplayed()
{
// The message will be shown
return true;
}
/**
* Retrieve system message text
*
* @return \Magento\Framework\Phrase
*/
public function getText()
{
return __('System Message Text.');
}
/**
* Retrieve system message severity
* Possible default system message types:
* - MessageInterface::SEVERITY_CRITICAL
* - MessageInterface::SEVERITY_MAJOR
* - MessageInterface::SEVERITY_MINOR
* - MessageInterface::SEVERITY_NOTICE
*
* @return int
*/
public function getSeverity()
{
return self::SEVERITY_MAJOR;
}
}