Jak używać zdarzeń i nasłuchiwaczy Laravel w swojej aplikacji?
Laravel ma kilka fajnych funkcji w swoim rdzeniu. Niektóre z nich to nadawanie, przechowywanie plików, powiadomienia, zdarzenia itp. Każda z tych wbudowanych funkcji pomaga programistom w uproszczeniu typowych i skomplikowanych zadań.
W tym artykule omówimy zdarzenia Laravel, które pozwalają nam zarejestrować słuchacza na konkretne zdarzenia, które występują w aplikacji. Innymi słowy, mogę powiedzieć, że użytkownik zarejestrował się, złożył zamówienie, dodany produkt, wszystko to są wydarzenia. A jeśli potrzebujesz wyzwolić jakąś akcję po tych zdarzeniach, możesz zarejestrować detektory. Laravel automatycznie dzwoni do słuchaczy zarejestrowanych na określone wydarzenia.
W naszym artykule zrealizuję wydarzenie do rejestracji użytkownika. Gdy użytkownik zarejestruje się w aplikacji, system powinien wysłać mu powitalną wiadomość e-mail. Tutaj rejestracja użytkownika jest wydarzeniem, a wysłanie powitalnego e-maila jest słuchaczem.
Powiedziawszy to, zobaczmy, jak wykorzystać zdarzenia i detektory w aplikacji Laravel.
Rejestrowanie wydarzeń i słuchaczy w Laravel
Laravel dostarcza EventServiceProvider
plik, w którym musisz zarejestrować swoje zdarzenia i słuchaczy. W naszym przypadku musimy dodać zdarzenie i słuchacz do rejestracji użytkownika. Więc otwórz plik EventServiceProvider.php
i dodaj UserRegistered
w nim wydarzenie.
app/Providers/EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
Użytkownik może dodać do tej tablicy dowolną liczbę zdarzeń w zależności od wymagań. Następnie wygeneruj zdarzenia Laravel, uruchamiając polecenie:
php artisan event:generate
To polecenie tworzy katalogi „Events" i „Listeners” w folderze „app”. W katalogu ‘app/Events’ znajdziesz plik UserRegistered.php
. Podobnie SendWelcomeEmail.php
plik znajduje się w katalogu „app/Listeners”.
Definiowanie zdarzeń i słuchaczy
Jesteś teraz gotowy z szablonem dla wydarzenia zarejestrowanego przez użytkownika. Naszym celem jest wysłanie e-maila powitalnego do użytkownika po jego zarejestrowaniu. Aby wysłać wiadomość e-mail, potrzebujemy obiektu użytkownika, który zawiera informacje o użytkowniku. W UserRegistered
przypadku, gdy przekazałem obiekt użytkownika do jego konstruktora. Ten obiekt przejdzie następnie do słuchacza.
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;
}
}
Kod, który wysyła wiadomość e-mail do użytkownika, zostanie umieszczony w pliku słuchacza. Otwórz listener SendWelcomeEmail
i napisz kod w następujący sposób.
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]');
});
}
}
W powyższym pliku napisałem kod do wysyłania e-maili w handle
metodzie klasy listener. Dzieje się tak, ponieważ handle
metoda otrzymuje wywołanie po wystąpieniu zdarzenia rejestracji użytkownika.
Użyłem również pierwszego parametru jako ’emails.mail’ w metodzie Mail. Oznacza to, że powinieneś utworzyć resources/views/emails/mail.blade.php
plik.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Wreszcie zadzwoń na wydarzenie
Na tym etapie wszyscy ustawiacie się ze swoim wydarzeniem i słuchaczem. Ostatnim krokiem pozostaje wywołanie zdarzenia z odpowiedniego miejsca. Załóżmy, że używasz „UserController” do rejestracji użytkownika. Więc z UserController
, możesz zadzwonić do wydarzenia w następujący sposób.
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;
}
}
Teraz, gdy użytkownik się zarejestrował, powyższy kod wywołuje zdarzenie „UserRegistered”, które ostatecznie wywołuje słuchacza. Słuchacz następnie wysyła powitalną wiadomość e-mail do użytkownika.
Mam nadzieję, że rozumiesz, jak używać zdarzeń i słuchaczy w swojej aplikacji Laravel. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak używać Laravel Passport do uwierzytelniania REST API?
- Wysyłanie wiadomości e-mail przez serwer SMTP Gmaila w Laravel
- System rejestracji i logowania użytkownika w Laravel