Add event listener pada Laravel dengan mudah
Home » Tutorial Laravel » Add event listener pada Laravel dengan mudah

Add event listener pada Laravel dengan mudah

Add event listener pada Laravel. Seperti biasa saya membahas fitur yang di sediakan oleh laravel yaitu even dan listener. Event dan Listener ini berjalan saling kerjasama. Sebagai contoh permasalahan. Saya ingin setiap input data user maka akan kirim email “Selamat bergabung”. Beberapa cara untuk memecahkan masalah tersebut.

  1. Setelah membuat kode input user maka akan menjalankan perintah email di mana kode ditulis di controller semua atau di repo dengan satu baris full
  2. Setelah membuat kode input user maka akan menjalankan perintah email di mana kode ditulis di repo dan model.

Saya mengunakan cara yang kedua dimana menulis kode di dalam repo dan untuk trigger kirim email menggunakan fitur event dan listener dengan menggabungkan dengan queue fitur laravel. Kenapa menggunakan queue laravel karena nanti setiap proses akan di pisah sehingga tidak menjadi lama atau kirim email berjalan di background sistem. Ok kita mulai pada implementasi

How to Add event listener

Untuk menambahkan event listener pada laravel, coba ikuti petunjuk berikut ini :

php artisan make:event SendMailWelcomeUserEvent
php artisan make:listener SendMailWelcomeListener

Untuk mengintegrasikan event dan listener maka tambahkan kode dibawah pada class EventServiceProvider

public function shouldDiscoverEvents()
{
    return true;
}

Ambil dari dokumentasi laravel

Agar event bisa menjalankan listerner maka pada class SendMailWelcomeListener tambakan code dibawah ini

class SendMailWelcomeListener
{
    public function __construct()
    {
        //
    }

    public function handle(SendMailWelcomeListener $event)
    {
         $event->user;
         // code untuk menulis perintah
    }
}

untuk menggunakan queue

class SendMailWelcomeListener implements ShouldQueue
{
    public $queue = 'high';

    public function __construct()
    {
        //
    }

    public function shouldQueue(SendMailWelcomeListener $event)
    {
         $event->user;
         // code untuk menulis perintah
    }
}

Pada Laravel dengan model seperti itu maka mempunyai default event creating, tidak cukup hanya itu saja, ada default Updating dan lainya. Pada pembelajaran kali ini, saya menggunakan default Creating. Kamu bisa menggunakanya setelah data sebelumnya sudah berhasil kamu buat (User / Registrasi). Setelah itu, buat Class model User. Supaya lebih jelas, coba simak contoh class code berikut ini

class User extends Model
{
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = ['password'];

    protected static function boot()
    {
        parent::boot();
        User::saved(function ($model) {
            event(new \App\Events\SendMailWelcomeUserEvent($model));
        });
    }
    
}

untuk class eventnya seperti ini

class SendMailWelcomeUserEvent
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('send-mail-welcome');
    }
}

Dari rangkaian program itu, maka akan menghasilkan suatu alur yang bisa kamu lihat pada contoh gambar.

Sebenarnya masih banyak penjelasan perihal event dan listener Laravel. Cuplikan ini hanya sedikit contoh saja karena masih banyak materi yang belum saya ulas. Kamu bisa mengikuti halaman ini agar bisa mendapat update terbaru tentang pemrograman event dan listener. Kami juga akan menerbitkan materi-materi / informasi terbaru yang tersimpan pada dokumentasi khusus pembelajaran Laravel. Itulah cara Add event listener pada Laravel yang bisa saya uraikan hari ini.

Tentang penulis : Rohani Suhadi
Tell us something about yourself.

2 komentar untuk “Add event listener pada Laravel dengan mudah”

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *