Was sind Notifications
Das Notification-System von Laravel bietet eine einheitliche API, um Benachrichtigungen über verschiedene Kanäle wie E-Mail, SMS, Slack oder Datenbank zu versenden. Unterschied zwischen Mail und Notification
Wenn Sie ein und dieselbe Benachrichtigung – etwa die Bestätigung einer bezahlten Rechnung – über mehrere Kanäle senden möchten, sind Notifications die bessere Wahl.
Eine Notification-Klasse erstellen
Erstellen Sie die Klasse mit dem Artisan-Befehlmake:notification.
app/Notifications/. Sie enthält die Methode via() sowie Methoden zur Nachrichtengenerierung für die einzelnen Kanäle.
Notifications versenden
Mit dem Notifiable-Trait
App\Models\User bindet standardmäßig das Trait Notifiable ein. Mit der Methode notify() senden Sie eine Benachrichtigung.
Das Trait
Notifiable ist nicht auf das User-Modell beschränkt – Sie können es jedem beliebigen Modell hinzufügen.Mit der Notification-Fassade
Um mehrere Benutzer gleichzeitig zu benachrichtigen, verwenden Sie die FassadeNotification.
sendNow().
Kanäle festlegen
Die Methodevia() liefert die zu verwendenden Kanäle als Array zurück.
Benachrichtigungen per E-Mail-Kanal
In der MethodetoMail() geben Sie eine MailMessage-Instanz zurück.
MailMessage:
Wenn Sie über einen Fehler informieren, färbt die Methode
error() den Button rot.
Markdown-Benachrichtigungs-E-Mails
Sie können auch reichhaltige E-Mails im Markdown-Format nutzen. Erzeugen Sie die Klasse mit der Option--markdown.
toMail() verwenden Sie toMarkdownMail() – bzw. markdown() in der Message.
Benachrichtigungen per Datenbank-Kanal
Über den Datenbank-Kanal speichern Sie Benachrichtigungen in der DB und können sie in der UI Ihrer Anwendung anzeigen.Tabelle vorbereiten
Legen Sie zunächst die Tabellenotifications an.
Methode toArray definieren
In der Methode toArray() geben Sie die zu speichernden Daten als Array zurück.
data der Tabelle notifications im JSON-Format abgelegt.
Benachrichtigungen abrufen
Über die vomNotifiable-Trait bereitgestellte Beziehung notifications rufen Sie die Benachrichtigungen ab.
unreadNotifications.
Als gelesen markieren
MitmarkAsRead() markieren Sie eine Benachrichtigung als gelesen.
Notifications über Queues verarbeiten
Wenn der Versand länger dauert, implementieren Sie das InterfaceShouldQueue und das Trait Queueable, um die Verarbeitung in eine Queue auszulagern. Bei mit make:notification erzeugten Klassen sind sie bereits importiert.
ShouldQueue implementiert ist, wandert die Benachrichtigung schon beim Aufruf von notify() automatisch in die Queue.
Gleichzeitiger Versand über mehrere Kanäle
Wennvia() mehrere Kanäle zurückgibt und Sie die jeweiligen Methoden definieren, wird dieselbe Benachrichtigung gleichzeitig über alle angegebenen Kanäle versendet.
On-Demand-Benachrichtigungen
Um Benutzer zu benachrichtigen, die kein Konto in Ihrer Anwendung haben, verwenden SieNotification::route().