Pada catatan kali ini saya akan mencatat proses belajar saya dalam mempelajari dan memahami cara kerja dari Event dan Listener di Laravel 5.8. Isinya memang akan banyak Snapshot dan sedikit snippet code karena ini adalah catatan bukan tutorial :).
Event classes biasanya berada di folder app/Events, dan listenernya berada di folder app/Listeners. jangan aneh bila tidak menemukan kedua folder tersebut karena akan digenerate saat kita menggenerate Event atau Listener kemudian waktu saat mengeksekusi artisan command.
Saya menggunakan instalasi Laravel yang sama dengan yang ada disini, catatan kecil dari instalasi laravel dengan cara paling simple yang bisa dilakukan.
Membuat Event dan Listener
Tambahkan baris berikut ini di app/Providers/EventServiceProvider.php untuk membuat Event dan Listenernya.
 |
Proses meregistrasikan event dan listener untuk digenerate. |
 |
Generate event dan listener yang sebelumnya didaftarkan di app/Providers/EventServiceProvider.php |
 |
Files dari Event dan Listener hasil Generate. |
Atau dibuat manual satu persatu Event dan Listenernya dengan cara berikut:
php artisan make:event TestEvent
php artisan make:listener TestEventListener --event="TestEvent"
 |
Membuat event listener |
Tapi jangan lupa untuk menambahkan files tsb di file app/Providers/EventServiceProvider.php karena perintah make: event dan make:listener tidak menambah baris tersebut secara otomatis.
 |
Meregistrsikan Event dan Listenernya |
Sampai disini saya sudah menambahkan Event dan Listenernya di file berikut ini app/Providers/EventServiceProvider.php lalu dengan ./artisan event:generate jadilah dua buah file TestEvent.php dan TestEventListener.php seperti yang ada di snapshot diatas (File dan folder otomatis dibuatkan/generate oleh perintah event:generate).
Implementasi Event dan Listener
Sekarang masuk ketahap bagaimana cara memfungsikan Event dan Listener diatas supaya menjadi sesuatu yang berguna, mari kita mulai dari TestEventListener.php.
TestEventListener.php
Sekarang lakukan perubahan pada method handle() yang berada di file TestEventListener.php, method ini akan dieksekusi saat Event bersangkutan bekerja.
 |
Ini nanti cara ceknya: tail -t ./storage/logs/laravel-{year}-{month}-{date}.log |
Triger/Panggil Event
Untuk memicu/memanggil event tersebut maka kita hanya perlu memanggil Event::fire() di method yang akan mentrigger Event tersebut.
Kita rubah sedikit existing route file dan controller file untuk menempatkan kodenya.
routes/web.php
 |
route |
app/Http/Controllers/Controller.php
 |
Controller |
Buka Browser
 |
Di controller ini tadi pemasangan event trigger dilakukan. |
Lihat Logs
 |
Log ter-trigger karena event dipanggil. |
Sumber
Comments
Post a Comment