Hur du använder Laravel-evenemang och lyssnare i din ansökan
Laravel kommer med flera coola funktioner i sin kärna. Några av dem är Broadcasting, File Storage, Notifications, Events, etc. Var och en av dessa inbyggda funktioner hjälper utvecklare att förenkla vanliga och komplicerade uppgifter.
I den här artikeln diskuterar vi Laravel-händelser som gör det möjligt för oss att registrera en lyssnare för specifika händelser som förekommer i applikationen. Med andra ord kan jag säga användarregistrerad, beställning placerad, produkt lagt till alla dessa är händelserna. Och om du behöver utlösa några åtgärder efter dessa händelser kan du registrera lyssnare. Laravel ringer automatiskt de lyssnare som är registrerade för specifika händelser.
För vår artikel kommer jag att implementera en händelse för användarregistrering. När en användare har registrerat sig i applikationen ska systemet skicka ett välkomstmeddelande till dem. Här är användarregistrering händelsen och att skicka ett välkomstmeddelande är en lyssnare.
Med detta sagt, låt oss se hur man använder händelser och lyssnare i din Laravel-applikation.
Registrera evenemang och lyssnare i Laravel
Laravel tillhandahåller EventServiceProvider
fil där du behöver registrera dina evenemang och lyssnare. I vårt fall måste vi lägga till en händelse och lyssnare för användarregistrering. Så öppna filen EventServiceProvider.php
och lägg till UserRegistered
händelse i den.
app / Providers / EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
Användaren kan lägga till så många händelser i denna matris beroende på krav. Generera sedan Laravel-händelser genom att köra kommandot:
php artisan event:generate
Detta kommando skapar katalogerna ‘Händelser’ och ‘Lyssnare’ under mappen ‘app’. Inne i katalogen ‘app / händelser’ hittar du filen UserRegistered.php
. På samma sätt finns SendWelcomeEmail.php
filen i katalogen ‘app / lyssnare’.
Definiera händelser och lyssnare
Du är nu redo med pannplattan för ditt användarregistrerade evenemang. Vårt mål är att skicka ett välkomstmeddelande till användaren efter att de registrerat sig. För att skicka ett mejl behöver vi ett användarobjekt som innehåller användarens information. I UserRegistered
händelse passerade jag ett användarobjekt till sin konstruktör. Detta objekt överförs sedan till lyssnaren.
app / Händelser / 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;
}
}
Koden som skickar ett e-postmeddelande till en användare går in i lyssnarfilen. Öppna lyssnaren SendWelcomeEmail
och skriv koden enligt följande.
app / lyssnare / 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]');
});
}
}
I ovanstående fil skrev jag koden för att skicka e-post i handle
metoden för lyssnarklassen. Detta beror på att handle
metoden får ett samtal efter en användarregistreringshändelse.
Jag använde också den första parametern som ’emails.mail’ i Mail-metoden. Det betyder att du ska skapa en resources/views/emails/mail.blade.php
fil.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Slutligen ring evenemanget
I det här skedet är du klar med ditt evenemang och din lyssnare. Det sista steget kvarstår är att ringa evenemanget från rätt plats. Låt oss säga att du använder ‘UserController’ för att registrera en användare. Så från UserController
, kan du ringa till evenemanget enligt följande.
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;
}
}
Nu när en användare registrerar, ger ovanstående kod ett samtal till "UserRegistered" -händelsen som så småningom ringer upp lyssnaren. Lyssnaren skickar sedan ett välkomstmeddelande till användaren.
Jag hoppas att du förstår hur du använder händelser och lyssnare i din Laravel-applikation. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Hur man använder Laravel Passport för REST API-autentisering
- Skicka e-post via Gmail SMTP-server i Laravel
- Användarregistrering och inloggningssystem i Laravel