Kuinka käyttää Laravel-tapahtumia ja kuuntelijoita sovelluksessasi
Laravelin ytimessä on useita hienoja ominaisuuksia. Jotkut niistä ovat lähetys, tiedostotallennus, ilmoitukset, tapahtumat jne. Jokainen näistä sisäänrakennetuista ominaisuuksista auttaa kehittäjiä yksinkertaistamaan yleisiä ja monimutkaisia tehtäviä.
Tässä artikkelissa keskustelemme Laravel-tapahtumista, joiden avulla voimme rekisteröidä kuuntelijan tiettyihin sovelluksessa esiintyviin tapahtumiin. Toisin sanoen voin sanoa, että käyttäjä on rekisteröity, tilaus tehty, tuote lisätty, kaikki nämä ovat tapahtumia. Ja jos joudut käynnistämään jonkin tapahtuman näiden tapahtumien jälkeen, voit rekisteröidä kuuntelijat. Laravel soittaa automaattisesti tiettyihin tapahtumiin rekisteröityneille kuulijoille.
Artikkeliamme varten toteutan tapahtuman käyttäjien rekisteröimiseksi. Kun käyttäjä on rekisteröitynyt sovellukseen, järjestelmän tulisi lähettää heille tervetuloviesti. Tässä käyttäjän rekisteröinti on tapahtuma ja tervetuloviestin lähettäminen on kuuntelija.
Tämän jälkeen katsotaanpa, miten tapahtumia ja kuuntelijoita voidaan käyttää Laravel-sovellukseen.
Tapahtumien ja kuuntelijoiden rekisteröinti Laraveliin
Laravel tarjoaa EventServiceProvider
tiedoston, johon sinun on rekisteröitävä tapahtumat ja kuuntelijat. Meidän tapauksessamme meidän on lisättävä tapahtuma ja kuuntelija käyttäjien rekisteröintiä varten. Joten avaa tiedosto EventServiceProvider.php
ja lisää siihen UserRegistered
tapahtuma.
app / Providers / EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
Käyttäjä voi lisätä tähän ryhmään niin monta tapahtumaa vaatimuksista riippuen. Luo seuraavaksi Laravel-tapahtumat suorittamalla komento:
php artisan event:generate
Tämä komento luo Tapahtumat- ja Kuunteluhakemistot ‘App’ -kansioon. Sovellus / Tapahtumat-hakemistosta löydät tiedoston UserRegistered.php
. Vastaavasti SendWelcomeEmail.php
tiedosto on hakemistossa ‘Sovellukset / Kuuntelijat’.
Tapahtumien ja kuuntelijoiden määrittely
Olet nyt valmis kattilalevyllä käyttäjän rekisteröimään tapahtumaan. Tavoitteenamme on lähettää tervetuloviesti käyttäjälle rekisteröinnin jälkeen. Sähköpostin lähettämiseen tarvitaan käyttäjäobjekti, joka sisältää käyttäjän tiedot. Jos UserRegistered
välitin käyttäjäobjektin sen rakentajalle. Tämä objekti siirtyy sitten kuuntelijalle.
app / Tapahtumat / 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;
}
}
Koodi, joka lähettää sähköpostin käyttäjälle, menee kuuntelijatiedostoon. Avaa kuuntelija SendWelcomeEmail
ja kirjoita koodi seuraavasti.
sovellus / Kuuntelijat / 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]');
});
}
}
Kirjoitin yllä olevaan tiedostoon sähköpostin lähettämisen koodin handle
kuuntelijaluokan menetelmään. Tämä johtuu siitä, että handle
menetelmä saa puhelun käyttäjän rekisteröintitapahtuman esiintymisen jälkeen.
Käytin ensimmäistä parametria myös nimellä "emails.mail" Mail-menetelmässä. Se tarkoittaa, että sinun pitäisi luoda resources/views/emails/mail.blade.php
tiedosto.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Lopuksi soita tapahtumaan
Tässä vaiheessa asetat kaikki tapahtuman ja kuuntelijan kanssa. Viimeinen vaihe on kutsua tapahtuma sopivasta paikasta. Oletetaan, että rekisteröit käyttäjän ‘UserControllerilla’. Joten alkaen UserController
, voit soittaa tapahtumaan seuraavasti.
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;
}
}
Nyt kun käyttäjä on rekisteröitynyt, yllä oleva koodi antaa kutsun ‘UserRegistered’ -tapahtumaan, joka lopulta kutsuu kuuntelijan. Kuuntelija lähettää sitten tervetuloviestin käyttäjälle.
Toivon, että ymmärrät kuinka käyttää tapahtumia ja kuuntelijoita Laravel-sovelluksessasi. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.