Benachrichtigungen in Laravel

In diesem Artikel untersuchen wir das Benachrichtigungssystem im Laravel-Web-Framework. Mit dem Benachrichtigungssystem in Laravel können Sie Benachrichtigungen über verschiedene Kanäle an Benutzer senden. Heute besprechen wir, wie Sie Benachrichtigungen über den E-Mail-Kanal senden können.

Grundlagen der Benachrichtigungen

Während der Anwendungsentwicklung müssen Sie die Benutzer häufig über verschiedene Statusänderungen informieren. Es kann entweder E-Mail-Benachrichtigungen gesendet werden, wenn sich der Bestellstatus ändert, oder eine SMS über die Anmeldeaktivität aus Sicherheitsgründen gesendet. Wir sprechen hier insbesondere über kurze Botschaften, die lediglich Einblick in die Zustandsänderungen bieten.

Laravel bietet bereits eine integrierte Funktion, mit der wir ähnliche Benachrichtigungen erhalten können. Das Senden von Benachrichtigungsnachrichten an Benutzer wird dadurch zu einem Kinderspiel und macht Spaß!

Das Schöne an diesem Ansatz ist, dass Sie aus verschiedenen Kanälen auswählen können, dass Benachrichtigungen gesendet werden. Gehen wir schnell die verschiedenen Benachrichtigungskanäle durch, die von Laravel unterstützt werden.

  • Mail: Die Benachrichtigungen werden in Form einer E-Mail an die Benutzer gesendet.
  • SMS: Wie der Name vermuten lässt, erhalten Benutzer auf ihrem Telefon SMS-Benachrichtigungen.
  • Locker: In diesem Fall werden die Benachrichtigungen auf Slack-Kanälen gesendet.
  • Datenbank: Mit dieser Option können Sie Benachrichtigungen in einer Datenbank speichern, wenn Sie eine benutzerdefinierte Benutzeroberfläche erstellen möchten, um sie anzuzeigen.

Bei verschiedenen Benachrichtigungskanälen verwenden wir den Mail-Kanal in unserem Beispielanwendungsfall, den wir im Verlauf dieses Lernprogramms entwickeln werden.

In der Tat handelt es sich um einen ziemlich einfachen Anwendungsfall, bei dem Benutzer unserer Anwendung Nachrichten an jeden Benutzer senden können. Wenn Benutzer eine neue Nachricht in ihrem Posteingang erhalten, informieren wir sie über dieses Ereignis, indem wir ihnen eine E-Mail senden. Das machen wir natürlich mit der Benachrichtigungsfunktion von Laravel!

Erstellen Sie eine benutzerdefinierte Benachrichtigungsklasse

Wie bereits erwähnt, werden wir eine Anwendung einrichten, mit der Benutzer unserer Anwendung einander Nachrichten senden können. Andererseits benachrichtigen wir die Benutzer, wenn sie eine neue Nachricht von anderen Benutzern per E-Mail erhalten.

In diesem Abschnitt erstellen wir die notwendigen Dateien, die erforderlich sind, um den von uns gesuchten Anwendungsfall zu implementieren.

Beginnen wir mit dem Botschaft Modell, das Nachrichten enthält, die von Benutzern aneinander gesendet werden.

$ php Handwerker make: model Message --migration

Wir müssen auch ein paar Felder wie hinzufügen zu, von und Botschaft zum Mitteilungen Tabelle. Ändern wir also die Migrationsdatei, bevor Sie das ausführen Wandern Befehl.

Inkremente ('id'); $ table-> integer ('from', FALSE, TRUE); $ table-> integer ('to', FALSE, TRUE); $ table-> text ('message'); $ table-> timestamps (); );  / ** * Kehren Sie die Migrationen um. * * @return void * / public function down () Schema :: dropIfExists ('messages'); 

Führen wir nun den Migrationsbefehl aus, der die Nachrichtentabelle in der Datenbank erstellt.

$ php Handwerker migrieren

Das sollte das schaffen Mitteilungen Tabelle in der Datenbank.

Stellen Sie außerdem sicher, dass Sie das standardmäßige Laravel-Authentifizierungssystem aktiviert haben, sodass Funktionen wie Registrierung und Anmeldung sofort funktionieren. Wenn Sie sich nicht sicher sind, wie Sie das tun sollen, erhalten Sie in der Laravel-Dokumentation einen schnellen Einblick.

Da jede Benachrichtigung in Laravel durch eine separate Klasse dargestellt wird, müssen Sie eine benutzerdefinierte Benachrichtigungsklasse erstellen, die zur Benachrichtigung der Benutzer verwendet wird. Verwenden Sie den folgenden artisan-Befehl, um eine benutzerdefinierte Benachrichtigungsklasse-NewMessage zu erstellen.

$ php Handwerker machen: Benachrichtigung NewMessage

Das sollte das schaffen app / Notifications / NewMessage.php Klasse, also lassen Sie uns den Inhalt dieser Datei durch den folgenden Inhalt ersetzen.

fromUser = $ Benutzer;  / ** * Liefert die Benachrichtigungskanäle. * * @param mixed $ meldepflichtig * @return array * / public function via ($ meldepflichtig) return ['mail'];  / ** * Ruft die E-Mail-Darstellung der Benachrichtigung ab. * * @param mixed $ notifyable * @return \ Illuminate \ Notifications \ Messages \ MailMessage * / öffentliche Funktion toMail ($ notifiable) $ subject = sprintf ('% s: Sie haben eine neue Nachricht von% s erhalten!' , config ('app.name'), $ this-> fromUser-> name); $ greeting = sprintf ('Hallo% s!', $ meldepflichtig-> name); return (neue MailMessage) -> Betreff ($ subject) -> Begrüßung ($ Begrüßung) -> Anrede ('Mit freundlichen Grüßen') -> Zeile ('Die Einführung in die Benachrichtigung.)) -> Aktion (' Benachrichtigungsaktion ', URL ('/')) -> Zeile ('Vielen Dank, dass Sie unsere Anwendung verwenden!');  / ** * Rufen Sie die Arraydarstellung der Benachrichtigung ab. * * @param mixed $ meldepflichtig * @return array * / public function toArray ($ meldepflichtig) return [//]; 

Da wir den E-Mail-Kanal verwenden, um Benachrichtigungen an Benutzer zu senden, klicken Sie auf über Methode ist entsprechend konfiguriert. Dies ist die Methode, mit der Sie den Kanaltyp einer Benachrichtigung konfigurieren können.

Als nächstes gibt es die schicken, mailen Methode, mit der Sie verschiedene E-Mail-Parameter konfigurieren können. In der Tat die schicken, mailen Methode sollte die Instanz von zurückgeben \ Illuminate \ Notifications \ Messages \ MailMessage, Diese Klasse bietet nützliche Methoden, mit denen Sie E-Mail-Parameter konfigurieren können.

Unter verschiedenen Methoden, die Linie Mit dieser Methode können Sie eine einzelne Zeile in eine Nachricht einfügen. Auf der anderen Seite gibt es die Aktion Eine Methode, mit der Sie einer Nachricht eine Call-to-Action-Schaltfläche hinzufügen können.

Auf diese Weise können Sie eine Nachricht formatieren, die an Benutzer gesendet wird. So sollten Sie die Benachrichtigungsklasse konfigurieren, während Sie den Mail-Kanal zum Senden von Benachrichtigungen verwenden.

Am Ende müssen Sie sicherstellen, dass Sie die erforderlichen Methoden entsprechend dem in der konfigurierten Kanaltyp implementieren über Methode. Wenn Sie beispielsweise den Datenbankkanal verwenden, der Benachrichtigungen in einer Datenbank speichert, müssen Sie den schicken, mailen Methode; stattdessen sollten Sie das implementieren toArray Methode, die die Daten formatiert, die in einer Datenbank gespeichert werden müssen.

So senden Sie Benachrichtigungen

Im vorherigen Abschnitt haben wir eine Benachrichtigungsklasse erstellt, die zum Senden von Benachrichtigungen bereit ist. In diesem Abschnitt erstellen wir Dateien, in denen gezeigt wird, wie Sie Benachrichtigungen mithilfe von senden können Neue Nachricht Benachrichtigungsklasse.

Erstellen Sie eine Controller-Datei unter app / Http / Controller / NotificationController.php mit folgenden Inhalten.

Middleware ('auth');  public function index () // Benutzer 2 sendet eine Nachricht an Benutzer 1 $ message = new Message; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo-Nachricht von Benutzer 2 an Benutzer 1'); $ message-> save (); $ fromUser = User :: find (2); $ toUser = User :: find (1); // Benachrichtigung über das "Benutzer" -Modell senden, wenn der Benutzer eine neue Nachricht erhält $ toUser-> notify (new NewMessage ($ fromUser)); // Benachrichtigung über die Fassade "Benachrichtigung" senden Benachrichtigung :: send ($ toUser, new NewMessage ($ fromUser)); 

Natürlich müssen Sie eine verknüpfte Route in der routen / web.php Datei.

Route :: get ('notify / index', 'NotificationController @ index');

Es gibt zwei Möglichkeiten, mit Laravel Benachrichtigungen zu senden: entweder über die meldepflichtige Entität oder über die Benachrichtigungsfassade.

Wenn die Entitätsmodellklasse das verwendet Illuminate \ Notifications \ Meldepflichtig Eigenschaft, dann könnten Sie das anrufen benachrichtigen Methode an diesem Modell. Das App \ Benutzer Klasse implementiert die Meldepflichtig Merkmal und somit wird es die meldepflichtige Entität. Andererseits können Sie auch die Illuminate \ Support \ Facades \ Notification Fassade, um Benachrichtigungen an Benutzer zu senden.

Lass uns durch gehen Index Methode des Controllers.

In unserem Fall benachrichtigen wir die Benutzer, wenn sie eine neue Nachricht erhalten. Wir haben also versucht, dieses Verhalten im Internet nachzuahmen Index Methode an erster Stelle.

Als Nächstes haben wir den Empfängerbenutzer über eine neue Nachricht informiert benachrichtigen Methode auf der $ toUser Objekt, wie es das ist meldepflichtig Entität.

$ toUser-> notify (new NewMessage ($ fromUser));

Sie haben vielleicht bemerkt, dass wir auch die bestanden haben $ fromUser Objekt im ersten Argument des __konstruieren Methode, da wir die von Benutzername in einer Nachricht.

Auf der anderen Seite, wenn Sie es mit Hilfe von simulieren möchten Benachrichtigung Fassade, es ist ziemlich einfach, dies mit dem folgenden Ausschnitt zu tun.

Benachrichtigung :: send ($ toUser, neue NewMessage ($ fromUser));

Wie Sie sehen können, haben wir die verwendet senden Methode der Benachrichtigungsfassade, um eine Benachrichtigung an einen Benutzer zu senden.

Öffnen Sie die URL http: // Ihre-Laravel-Site-Domain / notify / index in Ihrem Browser. Wenn Sie noch nicht angemeldet sind, werden Sie zum Anmeldebildschirm weitergeleitet. Wenn Sie angemeldet sind, erhalten Sie eine Benachrichtigungs-E-Mail an die E-Mail-Adresse, die dem Benutzer angehängt ist 1.

Sie fragen sich vielleicht, wie das Benachrichtigungssystem das erkennt zu Adresse, wenn wir sie noch nirgends konfiguriert haben. In diesem Fall versucht das Benachrichtigungssystem die Email Eigenschaft in dem meldepflichtigen Objekt. Und das App \ Benutzer Objektklasse hat diese Eigenschaft bereits, da wir das Standardauthentifizierungssystem von Laravel verwenden.

Wenn Sie dieses Verhalten jedoch überschreiben möchten und eine andere Eigenschaft als E-Mail verwenden möchten, müssen Sie lediglich die folgende Methode in Ihrer Benachrichtigungsklasse definieren.

öffentliche Funktion routeNotificationForMail () return $ this-> email_address; 

Nun sollte das Benachrichtigungssystem nach dem suchen E-Mail-Addresse Eigenschaft statt der Email Eigenschaft zum Abrufen der zu Adresse.

Und so verwenden Sie das Benachrichtigungssystem in Laravel. Damit sind wir auch am Ende dieses Artikels!

Fazit

Was wir heute durchgemacht haben, ist eine der nützlichsten, aber am wenigsten diskutierten Funktionen in Laravel-Benachrichtigungen. Sie können Benachrichtigungen über verschiedene Kanäle an Benutzer senden.

Nach einer kurzen Einführung haben wir ein reales Beispiel implementiert, das demonstriert, wie Benachrichtigungen über den Mail-Kanal gesendet werden. Es ist in der Tat sehr praktisch, wenn Sie Kurznachrichten über Statusänderungen in Ihrer Anwendung senden.

Für diejenigen unter Ihnen, die entweder gerade mit Laravel beginnen oder Ihr Wissen, Ihre Site oder Anwendung mit Erweiterungen erweitern möchten, haben wir eine Vielzahl von Möglichkeiten, die Sie in Envato Market lernen können.

Wenn Sie Fragen oder Anregungen haben, zögern Sie nicht, diese mithilfe des unten stehenden Feeds zu posten!