Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Envoyer des notifications avec Laravel
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Envoyer des notifications avec Laravel

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

L’envoi de notifications en temps réel peut surcharger votre application Laravel.

Cette surcharge peut entraîner des ralentissements et des erreurs, affectant l’expérience utilisateur.

Découvrez comment utiliser les notifications asynchrones et Laravel Horizon pour gérer efficacement ces processus.

Table de matière
Notification Laravel dans CommentControllerModifier Notification pour Commentaire LaravelTester Notifications Commentaire LaravelNotification Asynchrone avec Laravel JobsConfigurer Horizon pour Notifications LaravelSurveiller Jobs avec Laravel HorizonConclusion : Gestion des Notifications LaravelFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation
Flux des notifications Laravel avec file d'attente et Horizon

Explication du schéma :

  • Utilisateur ajoute un commentaire :Un autre utilisateur publie un commentaire sur un article.
  • Notification créée pour l’auteur :Une notification est créée pour l’auteur de l’article pour l’informer du nouveau commentaire.
  • Envoi de la notification via canaux :La notification peut être envoyée via différents canaux (email, SMS, etc.).
  • Notification en file d’attente :La notification est placée dans la file d’attente pour un envoi asynchrone.
  • Gestion via Horizon :Horizon permet de gérer les jobs en file d’attente pour traiter les notifications.
  • Surveillance des jobs :Horizon surveille le statut des jobs, permettant une gestion efficace.
  • Gestion des failed jobs :Horizon aide à détecter et gérer les jobs échoués pour garantir que les notifications sont envoyées.
  • Notification envoyée à l’auteur :L’auteur reçoit la notification sur l’ajout du commentaire.

Notification Laravel dans CommentController

La première étape consiste à modifier le contrôleur de commentaires pour envoyer une notification lorsqu’un utilisateur poste un commentaire. Voici comment vous pouvez faire cela.

En ajoutez la notification dans la méthode store pour envoyer une notification à l’auteur de l’article. Vous utiliserez la notification NewComment que nous avons définie précédemment.

				
					
 use App\Notifications\NewComment;
public function store(CommentRequest $request, Article $article)
{
$validatedData = $request->validated();
$validatedData['user_id'] = auth()->id();
// Crée le commentaire
$comment = $article->comments()->create($validatedData);
// Vérifie si l'utilisateur n'est pas l'auteur de l'article
if (auth()->id() !== $article->user_id) {
// Définit un délai de 10 secondes avant d'envoyer la notification
$when = now()->addSeconds(10);

// Envoie la notification à l'auteur de l'article avec un délai
$article->user->notify((new NewComment($comment))->delay($when));
}
$success = 'Commentaire ajouté.';
return back()->withSuccess($success);
}

				
			
  • Vérification de l’utilisateur :Si l’utilisateur connecté (le commentateur) n’est pas l’auteur de l’article ($article->user_id), alors une notification est envoyée à l’auteur.
  • Délai d’envoi de la notification :La notification est envoyée avec un délai de 10 secondes. Cela permet d’atténuer l’impact sur les performances en attendant un peu avant d’envoyer la notification.
Astuce Pratique : Utilisez des notifications avec délai pour ne pas surcharger immédiatement l’application et permettre un traitement asynchrone.

Modifier Notification pour Commentaire Laravel

Ensuite, vous devez ajuster la notification pour inclure des informations supplémentaires dans l’e-mail envoyé à l’utilisateur. Nous allons ajouter des détails dans le corps du mail, tels que le nom de l’utilisateur qui a commenté, le titre de l’article, et un lien pour voir le commentaire.

Code modifié de NewComment :

				
					
 <?php

namespace App\Notifications;

 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Notifications\Messages\MailMessage;
 use Illuminate\Notifications\Notification;
 use App\Models\Comment;

 class NewComment extends Notification implements ShouldQueue
 {
     use Queueable;
     protected Comment $comment;
     public function __construct(Comment $comment)
     {
         $this->comment = $comment;
     }
     public function via($notifiable)
     {
         return ['mail'];
     }
     public function toMail($notifiable)
     {
         return (new MailMessage())
         ->subject('Nouveau commentaire')
         ->greeting('Bonjour '.$this->comment->article->user->name)
         ->line('Vous avez reçu un nouveau commentaire de la part de '.$this->comment->user->name)
         ->line('L\'article est : '.$this->comment->article->title)
         ->action('Voir le commentaire', route('articles.show', ['article' => $this->comment->article->slug]))
         ->salutation('A bientôt sur '.config('app.name'));
     }
     public function toArray($notifiable)
     {
         return [
         //
         ];
     }
 }

				
			

Explication du code :

  • Champs personnalisés dans l’email :Le sujet, la salutation et les lignes de contenu de l’e-mail sont personnalisés pour informer l’auteur de l’article d’un nouveau commentaire.
  • Action dans l’e-mail :Le lien permet à l’utilisateur de voir le commentaire en cliquant sur un bouton, ce qui est pratique pour l’inciter à visiter l’article.
Erreur Courante : Assurez-vous que les attributs comme $this->comment->article->user->name ne sont pas null, sinon vous risquez des erreurs d’exécution.

Tester Notifications Commentaire Laravel

Lorsque vous ajoutez un commentaire comme « je teste la notification » , le processus complet devrait être :

  • Le commentaire est ajouté par l’utilisateur.
Exemple de notification Laravel sur un blog
  • Si l’utilisateur n’est pas l’auteur de l’article, une notification est envoyée à l’auteur de l’article après un délai de 10 secondes.
  • Vous devriez voir cette notification dans Mailtrap (si vous utilisez un outil de test d’e-mails) et vérifier que l’email contient les informations attendues.
Notification email Laravel avec commentaire
Astuce Pratique : Utilisez Mailtrap ou un service similaire pour tester les e-mails sans envoyer de véritables notifications en production.

Notification Asynchrone avec Laravel Jobs

Afin de traiter les notifications de manière asynchrone et éviter de bloquer le flux principal de votre application, vous devez implémenter ShouldQueue dans la classe NewComment.

Cela permet de mettre la notification en file d’attente et de la traiter plus tard par un worker, ce qui améliore les performances.

Nous avons déjà ajouté implements ShouldQueue dans la classe NewComment, ce qui signifie que la notification sera traitée en file d’attente.

Et après d’ajouter cette modification a la classe newComment en test avec l’envoi d’une autre commentaire comme « Hey! C’est moi qui parle ! » comme ceci :

Interface de blog affichant notification Laravel

Configurer Horizon pour Notifications Laravel

Si vous souhaitez travailler dans un environnement sombre, vous pouvez activer le mode sombre en décommentant la ligne suivante dans le fichier HorizonServiceProvider.php :

				
					
 public function boot(): void
{
parent::boot();
Horizon::night();
}

				
			

Cela changera l’interface de Horizon pour un thème sombre, ce qui peut être plus agréable pour les développeurs travaillant de nuit.

Vue des tâches terminées dans Laravel Horizon

Surveiller Jobs avec Laravel Horizon

Maintenant que la notification est mise en file d’attente, vous pouvez superviser son traitement dans Horizon .

  • Ouvrez Horizon dans votre navigateur (par défaut http ://localhost/horizon).
  • Vous y trouverez une section pour « Completed Jobs » où vous pouvez voir les jobs en cours et vérifier que la notification est bien en attente de traitement.
Capture d'écran des tâches terminées Laravel
  • Si vous souhaitez tester l’échec d’un job, vous pouvez simuler une erreur dans le code. Par exemple, décommentez la ligne qui appelle ->line(‘L\’article est :’.$this->comment->article->title) et provoquez une erreur, ce qui entraînera un échec du job.

Cela fera échouer le job, et vous pourrez observer l’échec dans la section « Failed Jobs » de Horizon.

Interface Laravel Horizon montrant jobs échoués
Astuce Pratique : Vous pouvez gérer les jobs échoués dans Laravel Horizon en utilisant des notifications de récupération ou en définissant un nombre de tentatives avant l’échec définitif du job.

Conclusion : Gestion des Notifications Laravel

Dans cet axe, nous avons appris à envoyer une notification lorsqu’un utilisateur poste un commentaire. Nous avons exploré comment mettre cette notification en file d’attente et la gérer avec Laravel Horizon. Nous avons également vu comment tester les jobs échoués et configurer l’interface Horizon en mode sombre pour une meilleure expérience utilisateur.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment envoyer une notification quand un commentaire est ajouté?
Pour envoyer une notification lorsqu’un commentaire est ajouté dans Laravel, modifiez le CommentController pour inclure l’envoi de notifications. Utilisez la notification NewComment pour informer l’auteur de l’article. Assurez-vous d’ajouter un délai pour envoyer la notification de manière asynchrone.
Pourquoi utiliser Laravel Horizon pour les notifications?
Laravel Horizon fournit une interface utilisateur pour gérer les jobs en file d’attente, offrant un contrôle et une surveillance précis des notifications envoyées. Il améliore l’efficacité en traitant les notifications asynchrones, réduisant ainsi la charge immédiate sur le serveur et assurant un suivi des jobs échoués.
Comment personnaliser l'email de notification dans Laravel?
Personnalisez l’email de notification en modifiant la classe de notification NewComment. Ajoutez dans le MailMessage des détails comme le nom de l’utilisateur, le titre de l’article, et un lien pour voir le commentaire. Assurez-vous que toutes les données nécessaires sont présentes pour éviter les erreurs.
Comment tester les notifications dans Laravel sans les envoyer?
Pour tester sans envoyer de vraies notifications, utilisez des services comme Mailtrap. Cela vous permet de simuler l’envoi d’emails et de vérifier leur contenu sans affecter les utilisateurs réels. Mailtrap est particulièrement utile pour s’assurer que les notifications contiennent les informations correctes.
Comment gérer les notifications échouées dans Laravel?
Gérez les notifications échouées en surveillant les jobs dans Laravel Horizon. Horizon offre une section ‘Failed Jobs’ qui vous permet de voir quelles notifications n’ont pas été livrées. Vous pouvez définir un nombre de tentatives avant l’échec définitif et configurer des notifications de récupération pour réessayer l’envoi.

Conclusion

En conclusion, maîtriser l’envoi de notifications dans Laravel via Horizon permet d’optimiser la gestion des interactions utilisateur. Quelle autre fonctionnalité de Laravel Horizon souhaitez-vous explorer?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Envoyer des notifications avec Laravel

© Alphorm - Tous droits réservés