Kuidas Laraveli sündmusi ja kuulajaid oma rakenduses kasutada
Laraveli tuumaks on mitu lahedat funktsiooni. Mõned neist on ringhääling, failide salvestamine, teatised, sündmused jne. Kõik need sisseehitatud funktsioonid aitavad arendajatel lihtsustada tavalisi ja keerulisi ülesandeid.
Selles artiklis käsitleme Laraveli sündmusi, mis võimaldavad meil kuulaja registreerida rakenduses esinevate konkreetsete sündmuste jaoks. Teisisõnu võin öelda, et kasutaja on registreerunud, tellimus tehtud, toode lisatud, kõik need on sündmused. Ja kui peate pärast neid sündmusi mõne toimingu käivitama, saate kuulajad registreerida. Laravel helistab konkreetsetele üritustele registreerunud kuulajatele automaatselt.
Meie artikli jaoks rakendan kasutaja registreerimise ürituse. Kui kasutaja on rakendusse registreerunud, peaks süsteem saatma talle tervitusmeili. Siin on kasutajate registreerimine sündmus ja tervitusmeili saatmine on kuulaja.
Seda öeldes vaatame, kuidas kasutada sündmusi ja kuulajaid oma Laraveli rakenduses.
Sündmuste ja kuulajate registreerimine Laravelis
Laravel pakub EventServiceProvider
faili, kuhu peate oma sündmused ja kuulajad registreerima. Meie puhul peame kasutajate registreerimiseks lisama sündmuse ja kuulaja. Niisiis, avage fail EventServiceProvider.php
ja lisage sinna UserRegistered
sündmus.
app / Providers / EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
Kasutaja saab sellele massiivile lisada nii palju sündmusi kui vaja. Järgmisena genereerige Laraveli sündmused käsu käivitamisega:
php artisan event:generate
See käsk loob kataloogi „Sündmused" ja „Kuulajad” kausta „rakendus”. Kaustas ‘rakendus / sündmused’ leiate faili UserRegistered.php
. Samamoodi on SendWelcomeEmail.php
fail kataloogis „rakendus / kuulajad”.
Sündmuste ja kuulajate määratlemine
Olete nüüd valmis oma kasutaja registreeritud sündmuse katlakiviga. Meie eesmärk on saata kasutajale pärast registreerumist tervitusmeil. E-kirja saatmiseks vajame kasutajainfot sisaldavat kasutajaobjekti. Juhul kui UserRegistered
edastasin kasutaja objekti selle konstruktorile. See objekt edastatakse seejärel kuulajale.
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;
}
}
Kood, mis saadab kasutajale meilisõnumi, läheb kuulajafaili. Avage kuulaja SendWelcomeEmail
ja kirjutage kood järgmiselt.
rakendus / Kuulajad / 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]');
});
}
}
Ülalolevas failis kirjutasin meilisõnumite saatmise koodi handle
kuulaja klassi meetodisse. Seda seetõttu, et handle
meetod saab kõne pärast kasutaja registreerimissündmuse toimumist.
Esimest parameetrit kasutasin ka e-posti meetodis ’emails.mail’. See tähendab, et peaksite looma resources/views/emails/mail.blade.php
faili.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Lõpuks helistage sündmusele
Selles etapis olete kõik koos oma sündmuse ja kuulajaga seadnud. Viimane samm on sündmuse helistamine sobivast kohast. Oletame, et kasutate kasutaja registreerimiseks ‘UserControllerit’. Nii UserController
saate sündmusest helistada järgmiselt.
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;
}
}
Nüüd, kui kasutaja on registreerunud, kutsub ülaltoodud kood kõne „UserRegistered” sündmusele, mis lõpuks kuulaja kutsub. Seejärel saadab kuulaja kasutajale tervitusmeili.
Loodan, et saate aru, kuidas kasutada sündmusi ja kuulajaid oma Laraveli rakenduses. Palun jagage oma mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.