Notifications à Laravel

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

Notions de base sur les notifications

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.

  • Courrier: Les notifications seront envoyées aux utilisateurs sous forme de courrier électronique.
  • SMS: Comme son nom l'indique, les utilisateurs recevront des notifications par SMS sur leur téléphone..
  • Mou: Dans ce cas, les notifications seront envoyées sur les canaux Slack.
  • Base de données: Cette option vous permet de stocker des notifications dans une base de données si vous souhaitez créer une interface utilisateur personnalisée pour l'afficher..

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!

Créer une classe de notification personnalisée

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.

Comment envoyer des notifications

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!

Conclusion

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