✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak używać zdarzeń i nasłuchiwaczy Laravel w swojej aplikacji?

109

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 EventServiceProviderplik, 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.phpi dodaj UserRegisteredw 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.phpplik 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 UserRegisteredprzypadku, 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 SendWelcomeEmaili 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 handlemetodzie klasy listener. Dzieje się tak, ponieważ handlemetoda 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.phpplik.

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

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów