✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur du använder Laravel-evenemang och lyssnare i din ansökan

14

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 EventServiceProviderfil 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.phpoch lägg till UserRegisteredhä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.phpfilen 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 UserRegisteredhä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 SendWelcomeEmailoch 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 handlemetoden för lyssnarklassen. Detta beror på att handlemetoden 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.phpfil.

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

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer