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.
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.
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!
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.
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!
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!