
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi client minta notifikasi yang muncul di dashboard sekaligus masuk ke inbox email mereka. Awalnya kelihatan ribet, tapi setelah ngulik sistem notification bawaan Laravel, ternyata kita bisa handle banyak channel sekaligus cuma dengan satu class. Biasanya saya pakai ini biar nggak perlu bikin table notification manual yang bikin database makin berantakan.
Tips & Best Practices
- Di banyak project, saya selalu biasain buat pisahin logic notifikasi ke dalam class sendiri biar controller nggak jadi 'sampah'.
- Kalau udah mainan queue, pastikan kalian pakai
ShouldQueuedi class notification biar user nggak nunggu lama gara-gara proses kirim email yang lemot. - Seringkali saya pakai
Notifiabletrait di model User, tapi kalau ada kebutuhan spesifik, jangan ragu buat bikin interface custom sendiri biar lebih fleksibel pas mau nambah channel baru.
Contoh Kode
Saat butuh notifikasi yang masuk ke database sekaligus email, saya biasanya setup seperti ini:
// App\Notifications\UserRegistered.php
public function via($notifiable) {
return ['mail', 'database'];
}
public function toArray($notifiable) {
return [
'message' => 'Selamat datang di aplikasi kami!',
'url' => url('/dashboard')
];
}Variasi Implementasi
Kalian bisa pilih mau pakai database driver untuk notifikasi yang butuh status 'read/unread', atau kalau mau lebih real-time, integrasiin sama Laravel Echo pakai broadcast driver. Kalau project-nya skala kecil, database biasa udah lebih dari cukup. Tapi kalau udah ribuan user, mending pindah ke Redis biar performa database utama nggak kesedot cuma buat query notifikasi.
Kesalahan Umum
- Lupa jalanin
php artisan notifications:table, akhirnya query notifikasi malah error karena table-nya nggak ada. - Terlalu banyak naruh logic berat di dalam
toArray, padahal itu bakal dipanggil tiap kali notifikasi di-render. - Nggak pakai queue, alhasil proses registrasi user jadi super lambat gara-gara nungguin smtp server respon.
- Salah config di
.envuntuk email, terus bingung kenapa notifikasi nggak pernah nyampe padahal database record-nya ada. - Lupa buat mekanisme 'mark as read' yang bikin UI notifikasi malah jadi numpuk nggak karuan di frontend.
Ringkasan
Ngoding fitur notifikasi di Laravel itu sebenernya cuma soal gimana kita rapiin aliran data dari backend ke user. Jangan pusing sama kerumitan teknis di awal, fokus aja dulu ke gimana notifikasi itu bisa nyampe ke tangan user dengan aman dan tepat waktu. Selamat ngoding!
Komentar
Posting Komentar