Apa itu with() pada Laravel Session?

Posted on

Jika kita belajar Laravel, terkadang kita pernah menjumpai tutorial yang menggunakan function with(). Lalu apa itu with() pada Laravel Session? Mengapa sering dikaitkan dengan session? Kita akan belajar tentang ini.

Apa Itu Sesi Flash?

Sebelum lanjut, mari kita belajar tentang Sesi Flash (Flash Session). Sesi flash adalah cara di Laravel untuk menyimpan informasi sementara antara halaman-halaman. Misalnya, kita mengisi form dan ingin memberi tahu user bahwa form berhasil dikirim setelah di-submit. Pemberitahuan bahwa form berhasil di submit ini menggunakan sesi Flash.

Selain Flash Session, ini juga sering disebut dengan Flash Message Laravel.

Bagaimana Laravel Menyimpan Informasi dengan Sesi Flash?

Sesi flash di Laravel biasanya diimplementasikan dengan menggunakan cookie untuk menyimpan datanya. Misalnya, ketika kita menggunakan return back()->with('success', 'Pesan sukses'), Laravel menyimpan ‘Pesan sukses’ ke dalam sesi flash dan mengirimkannya kembali ke browser sebagai cookie. Kemudian, pada request berikutnya, data sesi flash ini dapat diakses melalui Laravel.

Sesi flash ini tidak secara langsung disimpan di dalam session storage browser seperti yang dilakukan oleh sesi lokal (localStorage atau sessionStorage). Jadi, meskipun data tersebut dapat diakses di request berikutnya, tidak akan bertahan setelah browser ditutup karena bergantung pada cookie.

Menggunakan Fungsi with() untuk Menyimpan Pesan

Fungsi with() digunakan saat kita ingin memberi tahu user dengan suatu pesan (teks) setelah mereka melakukan sesuatu. Cara penggunaannya:

return redirect('/update')->with('success', 'Formulir berhasil dikirim!');

Dalam contoh ini, setelah user mengirim form, kita mengarahkannya kembali ke halaman formulir (redirect('/formulir')) dan memberi tahu mereka melalui pesan ‘Formulir berhasil dikirim!’ (with('success', 'Formulir berhasil dikirim!')).

Bagaimana Cara Mengambil Pesan Ini?

Ketika user kembali ke halaman form, kita ingin menunjukkan pesan sukses tersebut. Caranya sangat mudah:

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

Jika Anda perlu menyimpan data secara langsung di dalam session storage browser, Anda perlu menggunakan JavaScript untuk mengelola penyimpanan lokal di sisi klien.

Baca juga:

Semoga artikel Apa itu with() pada Laravel Session ini bermanfaat.