Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment utiliser les événements et les écouteurs Laravel dans votre application

247

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 EventServiceProviderfichier 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.phpet 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.phpfichier 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 UserRegisteredcas 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 SendWelcomeEmailet é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 handleméthode de la classe listener. En effet, la handlemé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.phpfichier.

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

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails