Nachricht in der Administration ausgeben in postUpdate Methode

Hallo Community,

ist es möglich in der Administration nach einem erfolgten Plugin-Update einen Hinweis auszugeben?
Beispielsweise in der postUpdate Methode?

public function postUpdate(UpdateContext $updateContext): void
    {
        parent::postUpdate($updateContext);

        // Code für Hinweis / Nachricht

    }

hinweis

1 „Gefällt mir“

@AlexGalax Danke für Deine Nachricht.

Ich befinde mich im Plugin-Context… die Anleitung ist für Apps…

Ich weiß leider nicht, wie ich aus der Plugin-Bootstrap die Informationen aus der Doku umsetzen könnte.

Du kannst Notifications in den Modul-Komponenten triggern:

custom/plugins/myPlugin/src/Resources/app/administration/src/module/my-plugin-module/page/my-plugin-module-detail/index.js

const { Component } = Shopware;

Component.register('my-plugin-module-detail', {
    this.createNotificationError({
        title: '',
        message: '',
    });
    this.createNotificationWarning({
        title: '',
        message: '',
    });
    this.createNotificationInfo({
        title: '',
        message: '',
    });
    this.createNotificationSuccess({
        title: '',
        message: '',
    });
})

Die Update-Notification von Shopware wird hier erzeugt:

Müsstest du schauen ob du das für dein Project irgendwie übernehmen kannst. Sollte aber eigentlich machbar sein.

hm…

okay, für einen „einfachen Hinweis“ ein ganzes Modul schreiben zu müssen erscheint mir irgendwie etwas oversized… zumal ich nicht weiß, wie man das dann in der PHP Methode aufrufen würden…

in Shopware 5 war das ein Zwei-Zeiler in der Update-Methode:

$message = 'foobar';
$updateContext->scheduleMessage($message);

Du kannst auf PHP Ebene den Notification Service Shopware\Administration\Notification\NotificationService nutzen.
Auf JS/Vue Ebene gibt es das Mixin notification

1 „Gefällt mir“

Danke für den Hinweis. NotificationService ist allerdings als @internal markiert und schlecht dokumentiert, aber hilft ja nix… Hab’s in SW v6.5 jetzt einfach so gemacht:

try {
	$this->notificationService->createNotification([
		'id' => md5($message), 'message' => $message, 'status' => 'error'
	], $context);
} catch (\Shopware\Core\Framework\DataAbstractionLayer\Write\Command\WriteTypeIntendException $e7n){
	// ignore insert of duplicate message
}

Welche status es gibt ist mir nicht klar, aber passt so erst mal.

Die Status sollten die selben wie im vue part sein. Also error, success und info.
Die @interal Markierung muss man in dem Fall in Kauf nehmen. Vielleicht im eigenen Code markieren und bei Major Realeases gegenprüfen.