Question

Dans mon Magento2 module que je veux créer administrateur système les messages qui sont collants et apparaître sur chaque page dans la adminhtml jusqu'à ce que le problème est résolu.C'est quelque chose d'important que l'administrateur doit d'adresse, sinon le magasin sera sévèrement touchés.Mais une fois le problème détecté a été résolu, le message devrait disparaître.

Un exemple, je suis en train de regarder les messages que me dire quand les indexeurs ou les caches doivent être actualisées.Comment puis-je créer des messages comme ça?

admin system message

Je regardais le module de base AdminNotification ce qui semble être l'unique responsable de ce.Il regarda les modèles et les blocs d'affichage de ces messages, et que tout fait sens, mais où sont-ils créés?Je n'arrive pas à comprendre comment créer ces notifications.

Il y a une table db appelé admin_system_messages qui stocke quelque chose par rapport à cela, mais je ne comprends pas le contenu.Le domaine identity ne contient qu'un long nombre hexadécimal.J'ai pris un numéro et cherché sur tout le code et de l'ensemble de la base de données pour trouver des références, mais rien n'est apparu.Comment fonctionne le module extrait de "Un ou plusieurs des Types de Cache sont invalidés [...]" à partir de cela?

Pour être clair, j'ai vu le mécanisme pour ajouter des messages temporaires qui sera présentée à l'utilisateur, tels que les confirmations lorsque vous supprimez ou enregistrer quelque chose et il vous dit qu'il a réussi.Ce n'est PAS ce que je cherche, je veux des messages permanente sur chaque page.Je sais que c'est gênant, mais je suis persuadé que c'est nécessaire dans mon cas.

Était-ce utile?

La solution

J'ai résolu moi-même.

Votre module a besoin d'une dépendance à Magento_AdminNotification.

Ensuite, vous créez un modèle qui met en œuvre MessageInterface, comme ceci:

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
  }
}

C'est vraiment tout là est à lui.J'ai passé autant de temps à chercher l'endroit dans le code où ces messages sont déclenchées, car je n'avais pas remarqué qu'ils déclenchent eux-mêmes à l'aide de la isDisplayed() la méthode.

Vous pouvez vous en inspirer d'autres, tels les messages utilisés dans la base:

\Magento\AdminNotification\Model\System\Message\Baseurl \Magento\AdminNotification\Model\System\Message\CacheOutdated \Magento\AdminNotification\Model\System\Message\Security

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top