1. Was sind Laravel Events und warum sollten Sie sie verwenden?
2. Einrichten eines neuen Events und eines Listeners in Laravel
Schritt 1: Erstellen eines neuen Events
Dieser Befehl erstellt eine neue Datei im Verzeichnis app/Events:
php artisan make:event UserRegistered
// app/Events/UserRegistered.php
namespace App\Events;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class UserRegistered
{
use Dispatchable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
}
Info
In diesem Event haben wir eine öffentliche Eigenschaft $user hinzugefügt, um die Benutzerdaten zu speichern, wenn das Event ausgelöst wird.
Schritt 2: Erstellen eines neuen Listeners
Dieser Befehl erstellt eine neue Datei im Verzeichnis app/Listeners:
php artisan make:listener SendWelcomeEmail --event=UserRegistered
// app/Listeners/SendWelcomeEmail.php
namespace App\Listeners;
use App\Events\UserRegistered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Mail;
class SendWelcomeEmail
{
public function __construct()
{
//
}
public function handle(UserRegistered $event)
{
// Hier senden wir eine Willkommens-E-Mail
Mail::to($event->user->email)->send(new \App\Mail\WelcomeMail($event->user));
}
}
Schritt 3: Registrieren Sie das Event und den Listener
// app/Providers/EventServiceProvider.php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
'App\Events\UserRegistered' => [
'App\Listeners\SendWelcomeEmail',
],
];
}
3. Auslösen des Events
Schritt 4: Event auslösen
// app/Http/Controllers/Auth/RegisterController.php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use App\Events\UserRegistered; // Importieren Sie das Event
class RegisterController extends Controller
{
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
// Event auslösen
event(new UserRegistered($user));
return $user;
}
}
4. Tipps und Tricks zur Arbeit mit Laravel Events
use Illuminate\Contracts\Queue\ShouldQueue;
class SendWelcomeEmail implements ShouldQueue
{
// Listener-Code...
}
"extra": {
"laravel": {
"dont-discover": []
}
}
Kommentare 0
Noch keine Kommentare. Seien Sie der Erste!