✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come utilizzare gli eventi e gli ascoltatori di Laravel nella tua applicazione

92

Laravel è dotato di diverse funzioni interessanti al suo interno. Alcuni di questi sono Broadcasting, File Storage, Notifiche, Eventi, ecc. Ognuna di queste funzionalità integrate aiuta gli sviluppatori a semplificare le attività comuni e complicate.

In questo articolo, discutiamo di Laravel Events che ci consentono di registrare un listener per eventi specifici che si verificano nell’applicazione. In altre parole, posso dire utente registrato, ordine effettuato, prodotto aggiunto, tutti questi sono gli eventi. E se hai bisogno di attivare qualche azione dopo questi eventi puoi registrare gli ascoltatori. Laravel chiama automaticamente gli ascoltatori registrati per eventi specifici.

Per il nostro articolo, implementerò un evento per la registrazione degli utenti. Una volta che un utente si è registrato all’applicazione, il sistema dovrebbe inviargli un’e-mail di benvenuto. Qui la registrazione dell’utente è l’evento e l’invio di un’e-mail di benvenuto è un ascoltatore.

Detto questo, vediamo come utilizzare eventi e listener nella tua applicazione Laravel.

Registrazione di eventi e ascoltatori in Laravel

Laravel fornisce EventServiceProviderfile in cui è necessario registrare i propri eventi e ascoltatori. Nel nostro caso dobbiamo aggiungere un evento e un listener per la registrazione dell’utente. Quindi, apri il file EventServiceProvider.phpe aggiungi l’ UserRegisteredevento al suo interno.

app/Providers/EventServiceProvider.php

...
...
class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'AppEventsUserRegistered' => [
            'AppListenersSendWelcomeEmail',
        ],
    ];

L’utente può aggiungere tanti eventi a questo array a seconda delle esigenze. Quindi, genera eventi Laravel eseguendo il comando:

php artisan event:generate

Questo comando crea le directory "Eventi" e "Ascoltatori" nella cartella "app". All’interno della directory ‘app/Events’ troverai il file UserRegistered.php. Allo stesso modo, il SendWelcomeEmail.phpfile si trova nella directory "app/Listeners".

Definizione di eventi e ascoltatori

Ora sei pronto con il boilerplate per il tuo evento registrato dall’utente. Il nostro obiettivo è inviare un’e-mail di benvenuto all’utente dopo la registrazione. Per inviare un’e-mail abbiamo bisogno di un oggetto utente che contenga le informazioni dell’utente. Nel UserRegisteredcaso in cui ho passato un oggetto utente al suo costruttore. Questo oggetto passerà quindi all’ascoltatore.

app/Eventi/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;   
    }
}

Il codice che invia un’email a un utente andrà all’interno del file listener. Apri listener SendWelcomeEmaile scrivi il codice come segue.

app/Listeners/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]');
        });
    }
}

Nel file sopra, ho scritto il codice per l’invio di email nel handlemetodo della classe listener. Questo perché il handlemetodo riceve una chiamata dopo il verificarsi di un evento di registrazione dell’utente.

Ho anche usato il primo parametro come ’emails.mail’ nel metodo Mail. Significa che dovresti creare un resources/views/emails/mail.blade.phpfile.

mail.blade.php

Hi <strong>{{ $name }}</strong>,
 
<p>{{ $body }}</p>

Chiama finalmente l’evento

A questo punto, tutto pronto con il tuo evento e ascoltatore. L’ultimo passaggio è chiamare l’evento dal luogo appropriato. Supponiamo che tu stia utilizzando "UserController" per registrare un utente. Quindi dal UserController, puoi chiamare l’evento come segue.

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;
    }
}

Ora, quando un utente si registra, il codice sopra dà una chiamata all’evento "UserRegistered" che alla fine chiama l’ascoltatore. L’ascoltatore invia quindi un’e-mail di benvenuto all’utente.

Spero che tu capisca come utilizzare eventi e listener nella tua applicazione Laravel. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More