カスタムスティッキー管理システムメッセージを作成する方法
-
29-09-2020 - |
質問
My Magento2モジュールでは、スティッキーの管理システムメッセージを作成し、問題が解決されるまでAdminHTMLのすべてのページに表示されます。管理者がアドレス指定する必要があることが重要なことです。そうしないと、店舗は厳しく影響します。しかし、検出された問題が解決されると、メッセージは消えます。
例として、インデクサーやキャッシュを更新する必要があるときに教えてくれるメッセージを見ています。どうやってそのようなメッセージを作成できますか?
私はこれに対して一意に責任があるように思われるコアモジュールAdminNotification
を見ていました。これらのメッセージを表示するには、関与したテンプレートとブロックを表示し、すべてが理にかなっていますが、それらはどこに作成されますか?これらの通知を作成する方法を把握することはできません。
それに関連するものを格納するadmin_system_messages
というDBテーブルがありますが、コンテンツはわかりません。フィールドidentity
には、長い16進数が含まれています。私はそのような数を取って、すべてのコードとデータベース全体を介してそれを検索して参照を見つけましたが、何も起動しませんでした。これからモジュールの1つ以上のキャッシュタイプが無効になるのはどのように抽出しますか?
をクリアするために、私は、何かを削除または保存したときの確認など、一度に表示される一時メッセージを追加するメカニズムを見ました。これは私が探しているものではありません、私はすべてのページで恒久的なメッセージを望みます。私はそれが目立たないことを知っていますが、私は私の症例で必要だと確信しています。
解決
私はこれを自分自身を解決しました。
あなたのモジュールはmagento_adminnotificationへの依存関係が必要です。
次のようにMessageInterfaceを実装するモデルを作成します。
class YourMessage implements \Magento\Framework\Notification\MessageInterface
{
public function getIdentity() {
...
}
public function isDisplayed() {
// write code to decide if this message should be shown or not
// return true to show it, false otherwise
}
public function getText() {
// output a static text or dynamically generate one
}
public function getSeverity() {
// if you return self::SEVERITY_MAJOR the sticky box on top will be empty
// if you return self::SEVERITY_CRITICAL the sticky box will always show your text
}
}
.
それは本当にそれがあることすべてです。私はこれらのメッセージがトリガーされたコード内の場所を探していた時間を費やしました。
コアで使用される他のそのようなメッセージからインスピレーションを得ることができます。
isDisplayed()
.
\Magento\AdminNotification\Model\System\Message\Baseurl
\Magento\AdminNotification\Model\System\Message\CacheOutdated