Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #33: Notifikasi dengan Session Laravel

 

 

Setelah pengguna melakukan sebuah aksi di aplikasi kamu—seperti mengirim formulir, berhasil login, atau menghapus data—sangat penting untuk memberikan umpan balik visual bahwa aksinya telah berhasil atau gagal. Cara paling elegan untuk melakukannya di Laravel adalah dengan menggunakan session flash data.

Flash data adalah fitur session yang memungkinkan kamu menyimpan data hanya untuk satu permintaan HTTP berikutnya, setelah itu data tersebut akan secara otomatis dihapus. Ini membuatnya sempurna untuk notifikasi sekali pakai seperti pesan sukses atau error.


 

1. Mengapa Menggunakan Session Flash untuk Notifikasi?

 

Bayangkan sebuah notifikasi seperti “sticky note” yang kamu tempelkan ke permintaan pengguna saat dia pindah ke halaman lain. Begitu halaman baru dimuat, “sticky note” itu akan terbaca dan kemudian dibuang.

  • Sekali Pakai: Notifikasi tidak akan muncul lagi jika pengguna me-reload halaman.
  • Aman dan Terpisah: Logika notifikasi berada di controller, sedangkan tampilan notifikasinya berada di view. Ini memisahkan logika dari presentasi, yang merupakan praktik baik dalam pemrograman.
  • Sangat Mudah: Laravel menyediakan helper with() yang disederhanakan dan bisa dirangkai langsung setelah redirect().

 

2. Langkah-Langkah Menerapkan Notifikasi

 

Prosesnya sangat sederhana dan hanya melibatkan tiga langkah utama:

 

A. Mengirim Notifikasi dari Controller

 

Setelah suatu proses berhasil atau gagal, kamu bisa mengirim data flash melalui redirect().

Gunakan helper with() yang menerima dua argumen:

  1. Kunci (Key): Nama unik untuk data flash kamu (misalnya, 'success', 'error', atau 'warning').
  2. Nilai (Value): Pesan notifikasi yang ingin kamu tampilkan.
PHP

// Contoh Notifikasi Sukses
return redirect('dashboard')->with('success', 'Data berhasil disimpan!');

// Contoh Notifikasi Error
return redirect()->back()->with('error', 'Silakan isi semua kolom yang diperlukan.');

Metode back() sangat berguna karena akan mengembalikan pengguna ke halaman sebelumnya.

 

B. Menampilkan Notifikasi di View

 

Di file Blade kamu, gunakan helper session() untuk memeriksa apakah notifikasi ada dan kemudian menampilkannya.

HTML

@if(session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif

@if(session('error'))
    <div class="alert alert-danger">
        {{ session('error') }}
    </div>
@endif

 

C. Contoh Praktik: Form Kontak Sederhana

 

Mari kita gabungkan semuanya dalam sebuah contoh nyata.

  • Route (routes/web.php)
    PHP

    use Illuminate\Support\Facades\Route;
    use App\Http\Controllers\ContactController;
    
    Route::get('/kontak', [ContactController::class, 'showForm']);
    Route::post('/kontak', [ContactController::class, 'submitForm']);
    
  • Controller (app/Http/Controllers/ContactController.php)
    PHP

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class ContactController extends Controller
    {
        public function showForm()
        {
            return view('contact');
        }
    
        public function submitForm(Request $request)
        {
            // Validasi Sederhana
            $validated = $request->validate([
                'nama' => 'required',
                'email' => 'required|email'
            ]);
    
            // Jika validasi gagal, Laravel akan otomatis redirect dengan error
            // Tapi jika sukses, kita kirimkan notifikasi sukses
            return redirect()->back()->with('success', 'Pesan kamu berhasil terkirim!');
        }
    }
    
  • View (resources/views/contact.blade.php)
    HTML

    <!DOCTYPE html>
    <html>
    <head>
        <title>Form Kontak</title>
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
        <div class="container mt-5">
            <h1>Kirim Pesan</h1>
    
            @if(session('success'))
                <div class="alert alert-success">
                    {{ session('success') }}
                </div>
            @endif
    
            @if($errors->any())
                <div class="alert alert-danger">
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
            @endif
    
            <form action="/kontak" method="POST">
                @csrf
                <div class="mb-3">
                    <label for="nama" class="form-label">Nama</label>
                    <input type="text" class="form-control" name="nama">
                </div>
                <div class="mb-3">
                    <label for="email" class="form-label">Email</label>
                    <input type="email" class="form-control" name="email">
                </div>
                <button type="submit" class="btn btn-primary">Kirim</button>
            </form>
        </div>
    </body>
    </html>
    

Dalam contoh di atas, jika kamu mengisi form dengan benar, submitForm() akan dijalankan dan mengarahkan kembali ke halaman kontak dengan notifikasi sukses. Jika kamu tidak mengisi nama atau email, validasi akan gagal dan Laravel secara otomatis mengirimkan error sebagai flash data.


 

Kesimpulan

 

Menggunakan session flash untuk notifikasi adalah cara paling efisien dan bersih di Laravel. Dengan satu baris kode di controller dan beberapa baris di view, kamu bisa memberikan umpan balik yang penting kepada pengguna tanpa membebani server atau browser. Ini adalah teknik dasar yang harus dikuasai oleh setiap pengembang Laravel.

Selamat mencoba! ✨

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek