Laravel Events & Listeners (Beginner Friendly)

riazul-islam
Riazul Islam
Published on Mar, 28 2026 2 min read 0 comments
image

📌 What are Events & Listeners?

Events allow you to decouple your application logic.

  • Trigger an event when something happens
  • Handle it later in a listener

Use Cases:

  • Sending email after user registration
  • Logging activity
  • Broadcasting notifications
  • Updating analytics

⚙️ Step 1: Create an Event

Generate an event:

php artisan make:event UserRegistered

app/Events/UserRegistered.php:

<?php

namespace App\Events;

use App\Models\User;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;

class UserRegistered
{
    use Dispatchable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
}
  • Event carries data ($user) to listeners

🔹 Step 2: Create a Listener

Generate listener:

php artisan make:listener SendWelcomeEmail --event=UserRegistered

app/Listeners/SendWelcomeEmail.php:

<?php

namespace App\Listeners;

use App\Events\UserRegistered;
use Illuminate\Support\Facades\Mail;

class SendWelcomeEmail
{
    public function handle(UserRegistered $event)
    {
        Mail::raw('Welcome to Laravel Events!', function ($message) use ($event) {
            $message->to($event->user->email)
                    ->subject('Welcome Email');
        });
    }
}
  • handle() → executes when the event is triggered

🔹 Step 3: Register Event & Listener

In app/Providers/EventServiceProvider.php:

protected $listen = [
    \App\Events\UserRegistered::class => [
        \App\Listeners\SendWelcomeEmail::class,
    ],
];
  • Laravel automatically listens for this event

🔹 Step 4: Trigger Event

Trigger event in controller (e.g., after user registration):

use App\Events\UserRegistered;

public function register(Request $request)
{
    $user = User::create($request->all());
    event(new UserRegistered($user)); // Trigger event
    return redirect('/dashboard');
}
  • Event fired immediately
  • Listener executes logic asynchronously (optional with queues)

🔹 Step 5: Queue Events & Listeners (Optional)

You can queue listeners for background processing:

class SendWelcomeEmail implements ShouldQueue
{
    use InteractsWithQueue, Queueable;
}
  • Avoids blocking HTTP request
  • Works with Laravel queue system

🔹 Step 6: Broadcasting Events (Optional)

Events can be broadcasted to frontend using Laravel Echo:

class UserRegistered implements ShouldBroadcast
{
    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function broadcastOn()
    {
        return new Channel('users');
    }
}
  • Enables real-time notifications in SPA apps or chat apps

📌 Key Takeaways

This week you learned:

  • What events & listeners are in Laravel
  • How to create and trigger events
  • How to handle logic in listeners
  • Optional: queue listeners for background tasks
  • Optional: broadcast events for real-time apps

👉 Next Week : Laravel Notifications & Mail System

0 Comments