Comment utiliser les événements et les écouteurs Laravel dans votre application
Laravel est livré avec plusieurs fonctionnalités intéressantes à la base. Certaines d’entre elles sont la diffusion, le stockage de fichiers, les notifications, les événements, etc. Chacune de ces fonctionnalités intégrées aide les développeurs à simplifier les tâches courantes et compliquées.
Dans cet article, nous discutons des événements Laravel qui nous permettent d’enregistrer un écouteur pour des événements spécifiques qui se produisent dans l’application. En d’autres termes, je peux dire utilisateur enregistré, commande passée, produit ajouté, ce sont tous des événements. Et si vous avez besoin de déclencher une action après ces événements, vous pouvez enregistrer des écouteurs. Laravel appelle automatiquement les auditeurs enregistrés pour des événements spécifiques.
Pour notre article, je vais mettre en place un événement pour l’enregistrement des utilisateurs. Une fois qu’un utilisateur s’est inscrit à l’application, le système doit lui envoyer un e-mail de bienvenue. Ici, l’enregistrement de l’utilisateur est l’événement et l’envoi d’un e-mail de bienvenue est un auditeur.
Cela dit, voyons comment utiliser les événements et les écouteurs dans votre application Laravel.
Enregistrement d’événements et d’auditeurs dans Laravel
Laravel fournit un EventServiceProvider
fichier où vous devez enregistrer vos événements et vos auditeurs. Dans notre cas, nous devons ajouter un événement et un écouteur pour l’enregistrement de l’utilisateur. Alors, ouvrez le fichier EventServiceProvider.php
et ajoutez-y un UserRegistered
événement.
app/Providers/EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
L’utilisateur peut ajouter autant d’événements à ce tableau en fonction des besoins. Ensuite, générez des événements Laravel en exécutant la commande :
php artisan event:generate
Cette commande crée les répertoires ‘Events’ et ‘Listeners’ sous le dossier ‘app’. Dans le répertoire ‘app/Events’, vous trouverez le fichier UserRegistered.php
. De même, le SendWelcomeEmail.php
fichier se trouve dans le répertoire ‘app/Listeners’.
Définition d’événements et d’écouteurs
Vous êtes maintenant prêt avec le passe-partout pour votre événement enregistré par l’utilisateur. Notre objectif est d’envoyer un e-mail de bienvenue à l’utilisateur après son inscription. Pour envoyer un e-mail, nous avons besoin d’un objet utilisateur qui contient les informations de l’utilisateur. Dans le UserRegistered
cas où j’ai passé un objet utilisateur à son constructeur. Cet objet sera ensuite transmis à l’auditeur.
app/Events/UserRegistered.php
<?php
namespace AppEvents;
....
use AppUser;
class UserRegistered
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}
Le code qui envoie un e-mail à un utilisateur ira à l’intérieur du fichier d’écoute. Ouvrez l’écouteur SendWelcomeEmail
et écrivez le code comme suit.
app/Auditeurs/SendWelcomeEmail.php
<?php
namespace AppListeners;
....
use Mail;
class SendWelcomeEmail
{
....
....
/**
* Handle the event.
*
* @param UserRegistered $event
* @return void
*/
public function handle(UserRegistered $event)
{
$data = array('name' => $event->user->name, 'email' => $event->user->email, 'body' => 'Welcome to our website. Hope you will enjoy our articles');
Mail::send('emails.mail', $data, function($message) use ($data) {
$message->to($data['email'])
->subject('Welcome to our Website');
$message->from('[email protected]');
});
}
}
Dans le fichier ci-dessus, j’ai écrit le code d’envoi d’email dans la handle
méthode de la classe listener. En effet, la handle
méthode reçoit un appel après l’occurrence d’un événement d’enregistrement d’utilisateur.
J’ai également utilisé le premier paramètre comme ’emails.mail’ dans la méthode Mail. Cela signifie que vous devez créer un resources/views/emails/mail.blade.php
fichier.
mail.lame.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Appelez enfin l’événement
À ce stade, vous êtes tous ensemble avec votre événement et votre auditeur. La dernière étape consiste à appeler l’événement depuis l’endroit approprié. Disons que vous utilisez ‘UserController’ pour enregistrer un utilisateur. Ainsi, à partir du UserController
, vous pouvez appeler l’événement comme suit.
app/Http/Controllers/UserController.php
<?php
namespace AppHttpControllers;
....
use AppEventsUserRegistered;
use AppUser;
class UserController extends Controller
{
.....
.....
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$user = User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);
// call our event here
event(new UserRegistered($user));
return $user;
}
}
Désormais, lorsqu’un utilisateur est enregistré, le code ci-dessus appelle l’événement ‘UserRegistered’ qui appelle finalement l’écouteur. L’auditeur envoie ensuite un e-mail de bienvenue à l’utilisateur.
J’espère que vous comprenez comment utiliser les événements et les écouteurs dans votre application Laravel. S’il vous plaît partager vos pensées et suggestions dans la section commentaires ci-dessous.
Articles Liés
- Comment utiliser Laravel Passport pour l’authentification API REST
- Envoi d’e-mails via le serveur SMTP de Gmail dans Laravel
- Enregistrement de l’utilisateur et système de connexion dans Laravel