Pada artikel ini kita akan belajar cara membuat notifikasi di laravel 10. Notifikasi Laravel adalah fitur yang kuat dari kerangka kerja PHP Laravel yang memungkinkan Anda untuk mengirim pemberitahuan kepada pengguna Anda melalui berbagai saluran seperti email, SMS, Slack, dan banyak lagi.
Notifikasi di Laravel diimplementasikan menggunakan kelas notifikasi yang memperluas class Illuminate\Notifications\Notification. Di dalam class notifikasi, Anda dapat mendefinisikan content dan format notifikasi, serta channel yang akan digunakan untuk mengirimkan notifikasi.
Laravel menyediakan berbagai saluran channel yang dapat Anda gunakan untuk mengirim notifikasi, seperti mail untuk mengirim notifikasi email, database untuk menyimpan notifikasi dalam database, dan broadcast untuk menyiarkan notifikasi melalui soket web. Anda juga dapat membuat channel khusus untuk mengirim notifikasi melalui media lain.
Dalam contoh ini, kita akan membuat notifikasi BirthdayWish sederhana dan mengirimkannya kepada pengguna pada hari ulang tahunnya. jadi, mari ikuti langkah berikut untuk menyelesaikan contoh sederhana ini.
Install Laravel
Pada langkah pertama kita install laravel terlebih dahulu. Langkah ini sebenarnya tidak wajib dilakukan. Namun, jika Anda belum membuat aplikasi laravel, Anda dapat langsung menjalankan perintah di bawah ini:
composer create-project laravel/laravel example-app
Konfigurasi Database
Pada tahapan ini, kita perlu menambahkan konfigurasi database pada file .env. jadi, mari kita tambahkan detail berikut dan kemudian jalankan perintah migrasi:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_notification DB_USERNAME=root DB_PASSWORD=
Membuat Table Baru
Selanjutnya, jalankan perintah migrasi untuk membuat tabel birthdate.
php artisan make:migration add_birthdate_column
Selanjutnya silakan buka file migrasi yang dihasilkan di database/migrations/xxxx_xx_xx_xxxxxx_add_birthdate_column.php. Pada method up(), kita menambahkan field birthdate dengan tipe datanya yaitu date.
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { $table->date('birthdate')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { } };
Sekarang Anda tinggal menjalankan perintah migrasi seperti berikut:
php artisan migrate
Jika terdapat pesan “The database ‘laravel_notification’ does not exist on the ‘mysql’ connection”, Anda bisa langsung ketik yes agar laravel membuatkan database secara otomatis.
Update Model
Pada langkah ini, kita akan menambahkan kolom “birthdate” pada array $fillable. Pastikan Anda menggunakan class Notifiable dari Illuminate\Notifications\Notifiable.
Mari kita salin code di bawah ini dan tempelkan di file app/Models/User.php
<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', 'birthdate' ]; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; }
Membuat Notification
Pada langkah ini, kita perlu membuat “Notification” dengan menggunakan perintah laravel artisan, jadi mari kita jalankan perintah di bawah ini, kita akan membuat class notification BirthdayWish. Setelah itu buka file app/Notifications/BirthdayWish.php dan tempelken code dibawah ini.
<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; class BirthdayWish extends Notification { use Queueable; private $messages; /** * Create a new notification instance. */ public function __construct($messages) { $this->messages = $messages; } /** * Get the notification's delivery channels. * * @return array */ public function via(object $notifiable): array { return ['mail']; } /** * Get the mail representation of the notification. */ public function toMail(object $notifiable): MailMessage { return (new MailMessage) ->line($this->messages['hi']) ->line($this->messages['wish']) ->line('Thank you for using our application!'); } /** * Get the array representation of the notification. * * @return array */ public function toArray(object $notifiable): array { return [ ]; } }
Konfigurasi
Buka file .env terlebih dahulu dan selanjutnya Anda harus menambahkan konfigurasi send mail dengan mail driver, mail host, mail port, mail username, mail password agar laravel dapat menggunakan konfigurasi sender tersebut untuk mengirim email. Jadi Anda cukup menambahkan seperti berikut ini.
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 [email protected] MAIL_PASSWORD=rrnnucvnqlbsl MAIL_ENCRYPTION=tls [email protected] MAIL_FROM_NAME="${APP_NAME}"
Membuat Route
Pada langkah ini kita perlu membuat route untuk mengirimkan notifikasi ke satu pengguna. Jadi buka file routes/web.php Anda dan tambahkan route berikut.
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\UserController; Route::get('user-notify', [UserController::class, 'index']);
Membuat Controller
Di sini, kita perlu membuat controller baru UserController dengan metode index untuk mengirim route notifikasi. Jadi, mari kita letakkan kode di bawah ini di file app/Http/Controllers/UserController.php.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use App\Notifications\BirthdayWish; class UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { $user = User::find(1); $messages["hi"] = "Hey, Happy Birthday {$user->name}"; $messages["wish"] = "On behalf of the entire company I wish you a very happy birthday and send you my best wishes for much happiness in your life."; $user->notify(new BirthdayWish($messages)); dd('Done'); } }
Selamat kita sudah selesai membuat notifikasi di laravel. Untuk mencoba aplikasi laravel yang Anda buat, Anda bisa menjalankan perintah di bawah ini.
php artisan serve
Anda bisa langsung membuka url http://127.0.0.1:8000/user-notify di browser untuk mendapatkan notifikasi mail. Jika ada pertanyaan, Anda bisa langsung tulis di kolom komentar di bawah ini.