How to use Events and Listeners in Laravel?


Posted 6 years ago by Ryan Dhungel

Category: Laravel

Viewed 8014 times

Estimated read time: 1 minute

An example of using Events and Listeners in laravel.

For example while creating a blog, you might want to email the users, subscribe them or add the blog to search index etc.

Instead of doing everything inside single controller method, we can create seperate Events and Listeners for each of those actions:

Create a new blog and use artisan command to create a new event called BlogWasCreated.

art make:event BlogWasCreated

BlogController.php

use App\Events\BlogWasCreated;

public function create()
    {
        $blog = new Blog;
        $blog->title = 'New Blog';
        // fire an event
        event(new BlogWasCreated($blog));
        // email
        // subscribe
        // search index
        $blog->save();
    }

BlogWasCreated.php

use App\Blog;

class BlogWasCreated

public $blog;

    public function __construct(Blog $blog)
    {
        $this->blog = $blog;
    }

Terminal

art make:listener EmailUserAboutCreatedBlog --event=BlogWasCreated

Listeners/EmailUserAboutCreatedBlog.php

public function handle(BlogWasCreated $event)
{
var_dump('email user');
}

Define Event and Listeners relationships

Providers/EventServiceProviders.php

protected $listen = [
'App\Events\BlogWasCreated' => [
'App\Listeners\EmailUserAboutCreatedBlog',
// go through the same process to add more events here
],
];

These are the key steps of using Events and Listeners in Laravel.