Dans cet article, nous allons explorer le système de notification dans le framework Web Laravel. Le système de notification de Laravel vous permet d'envoyer des notifications aux utilisateurs via différents canaux. Aujourd'hui, nous allons discuter de la manière dont vous pouvez envoyer des notifications par courrier électronique..
Lors du développement d'applications, vous devez souvent informer les utilisateurs de différents changements d'état. Il peut s'agir d'envoyer des notifications par courrier électronique lorsque l'état de la commande est modifié ou d'envoyer un SMS sur leur activité de connexion à des fins de sécurité. En particulier, nous parlons de messages courts qui fournissent juste un aperçu des changements d'état.
Laravel fournit déjà une fonctionnalité intégrée qui nous aide à obtenir quelque chose de similaire. En fait, l'envoi de messages de notification aux utilisateurs devient un jeu d'enfant et une expérience amusante.!
L'avantage de cette approche est qu'elle vous permet de choisir parmi différents canaux. Les notifications seront envoyées. Passons rapidement en revue les différents canaux de notification supportés par Laravel.
Parmi les différents canaux de notification, nous utiliserons le canal de messagerie dans notre exemple de cas d'utilisation que nous allons développer au cours de ce didacticiel..
En fait, ce sera un cas d'utilisation assez simple qui permet aux utilisateurs de notre application d'envoyer des messages à chaque utilisateur. Lorsque les utilisateurs reçoivent un nouveau message dans leur boîte de réception, nous les en informons en leur envoyant un courrier électronique. Bien sûr, nous allons le faire en utilisant la fonctionnalité de notification de Laravel!
Comme nous en avons discuté précédemment, nous allons configurer une application permettant aux utilisateurs de notre application de s'envoyer des messages. D'autre part, nous informerons les utilisateurs lorsqu'ils recevront un nouveau message d'autres utilisateurs par courrier électronique..
Dans cette section, nous allons créer les fichiers nécessaires à la mise en oeuvre du cas d'utilisation recherché..
Pour commencer, créons le Message
modèle qui contient les messages envoyés par les utilisateurs les uns aux autres.
$ php artisan marque: modèle Message - migration
Nous devons également ajouter quelques champs tels que à
, de
et message
au messages
table. Alors changeons le fichier de migration avant d'exécuter le émigrer
commander.
incréments ('id'); $ table-> entier ('from', FALSE, TRUE); $ table-> integer ('to', FALSE, TRUE); $ table-> text ('message'); $ table-> horodatages (); ); / ** * Inverser les migrations. * * @retour void * / public function down () Schema :: dropIfExists ('messages');
Maintenant, exécutons la commande migrate qui crée la table des messages dans la base de données.
$ php artisan migrate
Cela devrait créer le messages
table dans la base de données.
Assurez-vous également que vous avez activé le système d’authentification Laravel par défaut afin que les fonctionnalités telles que l’enregistrement et la connexion fonctionnent immédiatement. Si vous ne savez pas comment faire cela, la documentation de Laravel fournit un aperçu rapide de cette.
Comme chaque notification dans Laravel est représentée par une classe séparée, nous devons créer une classe de notification personnalisée qui sera utilisée pour notifier les utilisateurs. Utilisons la commande artisan suivante pour créer une notification personnalisée classe-NewMessage.
$ php artisan marque: notification NewMessage
Cela devrait créer le app / Notifications / NewMessage.php
classe, alors remplaçons le contenu de ce fichier par le contenu suivant.
fromUser = $ user; / ** * Obtenir les canaux de livraison de la notification. * * @param mixed $ notifiable * @return array * / fonction publique via ($ notifiable) return ['mail']; / ** * Récupère la représentation mail de la notification. * * @param mixed $ notifiable * @return \ Illuminate \ Notifications \ Messages \ MailMessage * / fonction publique toMail ($ notifiable) $ subject = sprintf ('% s: Vous avez reçu un nouveau message de% s!'. , config ('app.name'), $ this-> fromUser-> name); $ greeting = sprintf ('Hello% s!', $ notifiable-> name); return (new MailMessage) -> subject ($ subject) -> salutation ($ salutation) -> salutation ('Yours Faithfully') -> ligne ('Introduction à la notification.') -> action ('Notification Action', url ('/')) -> line ('Merci d'utiliser notre application!'); / ** * Récupère la représentation en tableau de la notification. * * @param mixed $ notifiable * @return array * / fonction publique toArray ($ notifiable) return [//];
Comme nous allons utiliser le canal de messagerie pour envoyer des notifications aux utilisateurs, le via
La méthode est configurée en conséquence. C'est donc la méthode qui vous permet de configurer le type de canal d'une notification.
Ensuite, il y a la au courrier
méthode qui vous permet de configurer divers paramètres de courrier électronique. En fait, le au courrier
méthode devrait retourner l'instance de \ Illuminate \ Notifications \ Messages \ MailMessage
, et cette classe fournit des méthodes utiles qui vous permettent de configurer les paramètres de messagerie.
Parmi les différentes méthodes, le ligne
Cette méthode vous permet d’ajouter une seule ligne dans un message. D'autre part, il y a la action
méthode qui vous permet d'ajouter un bouton d'appel à l'action dans un message.
De cette façon, vous pouvez formater un message qui sera envoyé aux utilisateurs. Voilà comment vous êtes censé configurer la classe de notification lorsque vous utilisez le canal de messagerie pour envoyer des notifications..
A la fin, vous devez vous assurer d’implémenter les méthodes nécessaires en fonction du type de canal configuré dans le via
méthode. Par exemple, si vous utilisez le canal de base de données qui stocke les notifications dans une base de données, vous n'avez pas besoin de configurer le au courrier
méthode; au lieu de cela, vous devez implémenter le toArray
méthode, qui formate les données qui doivent être stockées dans une base de données.
Dans la section précédente, nous avons créé une classe de notification prête à envoyer des notifications. Dans cette section, nous allons créer des fichiers qui montrent comment envoyer des notifications à l’aide de la Nouveau message
classe de notification.
Créons un fichier de contrôleur à app / Http / Controllers / NotificationController.php
avec le contenu suivant.
middleware ('auth'); public function index () // l'utilisateur 2 envoie un message à l'utilisateur 1 $ message = new Message; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Message de démonstration de l'utilisateur 2 à l'utilisateur 1.'); $ message-> save (); $ fromUser = User :: find (2); $ toUser = User :: find (1); // envoie une notification en utilisant le modèle "utilisateur", lorsque l'utilisateur reçoit le nouveau message $ toUser-> notify (new NewMessage ($ fromUser)); // envoie une notification en utilisant la façade "Notification" Notification :: send ($ toUser, new NewMessage ($ fromUser));
Bien sûr, vous devez ajouter un itinéraire associé dans le routes / web.php
fichier.
Route :: get ('notify / index', 'NotificationController @ index');
Laravel vous permet d'envoyer des notifications de deux manières: en utilisant soit l'entité à déclarer, soit la façade de notification..
Si la classe de modèle d'entité utilise le Illuminer \ Notifications \ Notifiable
trait, alors vous pouvez appeler le notifier
méthode sur ce modèle. le App \ Utilisateur
la classe implémente le Notifiable
trait et donc il devient l'entité à notifier. D'autre part, vous pouvez également utiliser le Illuminer \ Support \ Façades \ Notification
Façade pour envoyer des notifications aux utilisateurs.
Passons à travers le indice
méthode du contrôleur.
Dans notre cas, nous informerons les utilisateurs lorsqu'ils recevront un nouveau message. Nous avons donc essayé d'imiter ce comportement dans le indice
méthode en premier lieu.
Ensuite, nous avons informé l’utilisateur destinataire d’un nouveau message à l’aide de la touche notifier
méthode sur le $ toUser
objet, comme c'est le à déclaration obligatoire entité.
$ toUser-> notify (new NewMessage ($ fromUser));
Vous avez peut-être remarqué que nous passons aussi le $ fromUser
objet dans le premier argument de la __construction
méthode, puisque nous voulons inclure le de nom d'utilisateur dans un message.
D'autre part, si vous voulez l'imiter en utilisant le Notification
façade, c’est assez facile à faire avec l’extrait suivant.
Notification :: send ($ toUser, new NewMessage ($ fromUser));
Comme vous pouvez le voir, nous avons utilisé le envoyer
méthode de la façade de notification pour envoyer une notification à un utilisateur.
Allez-y et ouvrez l'URL http: // votre-domaine-site-laravel / notify / index dans votre navigateur. Si vous n'êtes pas encore connecté, vous serez redirigé vers l'écran de connexion. Une fois que vous êtes connecté, vous devriez recevoir une notification par courrier électronique à l'adresse électronique jointe à l'utilisateur. 1
.
Vous vous demandez peut-être comment le système de notification détecte la à
adresse quand nous ne l'avons pas encore configuré nulle part. Dans ce cas, le système de notification essaie de trouver le email
propriété dans l'objet à notifier. Et le App \ Utilisateur
la classe d'objets a déjà cette propriété, car nous utilisons le système d'authentification Laravel par défaut.
Toutefois, si vous souhaitez remplacer ce comportement et que vous souhaitez utiliser une propriété différente de la messagerie électronique, il vous suffit de définir la méthode suivante dans votre classe de notification..
fonction publique routeNotificationForMail () return $ this-> email_address;
Maintenant, le système de notification doit rechercher le adresse électronique
propriété au lieu de email
propriété pour aller chercher le à
adresse.
Et voilà comment utiliser le système de notification à Laravel. Cela nous amène à la fin de cet article aussi!
Ce que nous avons traversé aujourd’hui est l’une des fonctionnalités utiles, mais encore moins discutées, de Laravel-notifications. Il vous permet d'envoyer des notifications aux utilisateurs sur différents canaux.
Après une brève introduction, nous avons implémenté un exemple concret montrant comment envoyer des notifications par le canal de messagerie. En fait, il est très pratique d'envoyer des messages courts sur les changements d'état dans votre application..
Pour ceux d'entre vous qui débutent avec Laravel ou qui souhaitent développer leurs connaissances, leur site ou leur application avec des extensions, nous pouvons étudier de nombreuses choses sur le marché Envato..
Si vous avez des questions ou des suggestions, n'hésitez pas à les poster en utilisant le flux ci-dessous.!