...
✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So verwenden Sie Laravel-Ereignisse und -Listener in Ihrer Anwendung

52

Laravel kommt mit mehreren coolen Features im Kern. Einige von ihnen sind Broadcasting, File Storage, Notifications, Events, etc. Jede dieser integrierten Funktionen hilft Entwicklern, gängige und komplizierte Aufgaben zu vereinfachen.

In diesem Artikel besprechen wir Laravel-Ereignisse, die es uns ermöglichen, einen Listener für bestimmte Ereignisse zu registrieren, die in der Anwendung auftreten. Mit anderen Worten, ich kann sagen, Benutzer registriert, Bestellung aufgegeben, Produkt hinzugefügt, all dies sind die Ereignisse. Und wenn Sie nach diesen Ereignissen eine Aktion auslösen müssen, können Sie Listener registrieren. Laravel ruft automatisch die Listener auf, die für bestimmte Ereignisse registriert sind.

Für unseren Artikel werde ich eine Veranstaltung zur Benutzerregistrierung implementieren. Sobald sich ein Benutzer bei der Anwendung registriert hat, sollte ihm das System eine Willkommens-E-Mail senden. Hier ist die Benutzerregistrierung das Ereignis und das Senden einer Willkommens-E-Mail ein Hörer.

Sehen wir uns jedoch an, wie Sie Ereignisse und Listener in Ihrer Laravel-Anwendung verwenden.

Registrieren von Ereignissen und Zuhörern in Laravel

Laravel bietet eine EventServiceProviderDatei, in der Sie Ihre Ereignisse und Zuhörer registrieren müssen. In unserem Fall müssen wir ein Ereignis und einen Listener für die Benutzerregistrierung hinzufügen. Öffnen Sie also die Datei EventServiceProvider.phpund fügen Sie ein UserRegisteredEreignis hinzu.

app/Provider/EventServiceProvider.php

...
...
class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'AppEventsUserRegistered' => [
            'AppListenersSendWelcomeEmail',
        ],
    ];

Der Benutzer kann diesem Array je nach Bedarf beliebig viele Ereignisse hinzufügen. Als nächstes generieren Sie Laravel-Ereignisse, indem Sie den Befehl ausführen:

php artisan event:generate

Dieser Befehl erstellt die Verzeichnisse ‘Events’ und ‘Listeners’ im Ordner ‘app’. Im Verzeichnis ‘app/Events’ finden Sie die Datei UserRegistered.php. Ebenso befindet sich die SendWelcomeEmail.phpDatei im Verzeichnis ‘app/Listeners’.

Definieren von Ereignissen und Listenern

Sie sind nun mit dem Boilerplate für Ihr benutzerregistriertes Ereignis fertig. Unser Ziel ist es, dem Benutzer nach der Registrierung eine Willkommens-E-Mail zu senden. Zum Versenden einer E-Mail benötigen wir ein Benutzerobjekt, das die Informationen des Benutzers enthält. Für den UserRegisteredFall, dass ich ein Benutzerobjekt an seinen Konstruktor übergeben habe. Dieses Objekt wird dann an den Listener übergeben.

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;   
    }
}

Der Code, der eine E-Mail an einen Benutzer sendet, wird in die Listener-Datei eingefügt. Öffnen Sie den Listener SendWelcomeEmailund schreiben Sie den Code wie folgt.

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]');
        });
    }
}

In der obigen Datei habe ich den Code zum Senden von E-Mails in die handleMethode der Listener-Klasse geschrieben. Dies liegt daran, dass die handleMethode nach dem Auftreten eines Benutzerregistrierungsereignisses einen Aufruf erhält.

Ich habe auch den ersten Parameter als ’emails.mail’ in der Mail-Methode verwendet. Es bedeutet, dass Sie eine resources/views/emails/mail.blade.phpDatei erstellen sollten .

mail.blade.php

Hi <strong>{{ $name }}</strong>,
 
<p>{{ $body }}</p>

Rufen Sie endlich das Event auf

In dieser Phase sind Sie mit Ihrem Ereignis und Ihrem Zuhörer fertig. Der letzte Schritt ist das Aufrufen des Ereignisses von der entsprechenden Stelle. Angenommen, Sie verwenden ‘UserController’ zum Registrieren eines Benutzers. UserControllerSie können also von der aus die Veranstaltung wie folgt anrufen.

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;
    }
}

Wenn sich nun ein Benutzer registriert, ruft der obige Code das Ereignis ‘UserRegistered’ auf, das schließlich den Listener aufruft. Der Listener sendet dann eine Willkommens-E-Mail an den Benutzer.

Ich hoffe, Sie verstehen, wie Sie Ereignisse und Listener in Ihrer Laravel-Anwendung verwenden. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen