我想为正在开发的模块创建自定义管理员通知消息,如下图所示。我希望通知在所有管理页面中保持可见,直到满足特定条件。

enter image description here

关于这个主题还有另一个 线程,但我找不到如何获取实现\\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;
   }
}
许可以下: CC-BY-SA归因
scroll top