Site icon agussuratna.net

Tutorial Laravel #21 : Session dan Notifikasi Pada Laravel

Session merupakan data yang bersifat sementara, data session disimpan pada server. Salah satu contoh penggunaan session yang pasti sudah umum adalah untuk membuat proses login dan pengecekan login.

Seperti yang sudah dijelaskan juga pada tutorial sebelumnya tentang membuat login dengan PHP dan Mysqli, pada proses login sebuah sistem biasanya session menjadi kunci penanda bahwa yang memiliki kunci tersebut bisa masuk ke sistem yang dibuat.

Tidak jauh berbeda dengan penggunaan dan pengertian session pada laravel, kegunaan dan pengertiannya masih sama, yang membedakannya hanya cara membuat session pada laravel.

Pada tutorial ini kita akan belajar cara membuat session dengan laravel, menghapus session, dan menampilkan isi session. dan lain-lain.

Session Laravel

Pada tutorial session laravel ini kita hanya akan belajar dasar-dasar session pada laravel, kita tidak akan jauh mempelajari penggunaan session seperti membuat login.

Silahkan buat sebuah project laravel atau melanjutkan tutorial sebelumnya, pada tutorial session laravel ini saya sudah menyediakan sebuah project laravel dengan nama “latihan_laravel“.

Berikut langkah-langkah dalam pembuatan session :

  1. Buat route baru pada routes/web.php
    Route::get('/session/tampil','SessionController@tampilkanSession');
    Route::get('/session/buat','SessionController@buatSession');
    Route::get('/session/hapus','SessionController@hapusSession');

    Perhatikan route di atas, route ‘session/tampil‘ akan mengakses method tampilkanSession() dalam controller SessionController.php. Route ‘session/buat‘ akan mengakses method buatSession() pada controller SessionController.php dan route ‘session/hapus‘ kita arahkan untuk mengakses method hapusSession() pada controller SessionController.php.

  2. Selanjutnya buat sebuah controller dengan nama SessionController.php, silahkan buat controller tersebut pada cmd/terminal dengan mengetikan perintah :
    php artisan make:controller SessionController

    Kemudian buat beberapa method dalam controller SessionController.php yang telah dibuat, seperti berikut ini :

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class SessionController extends Controller
    {
        // menampilkan isi session
        public function tampilkanSession(Request $request) 
        {
            if($request->session()->has('nama'))
            {
                echo $request->session()->get('nama');
            }
            else
            {
                echo 'Tidak ada data dalam session.';
            }
        }
        
        // membuat session
        public function buatSession(Request $request) 
        {
            $request->session()->put('nama','Agus Suratna');
            echo "Data telah ditambahkan ke session.";
        }
        
        // menghapus session
        public function hapusSession(Request $request) 
        {
            $request->session()->forget('nama');
            echo "Data telah dihapus dari session.";
        }
    }

    Perhatikan ketiga method di atas, pada method tampilkanSession() kita membuat pemeriksaan menggunakan if .. else, jika ada session nama, maka tampilkan isi dari session nama, jika tidak tampilkan pesan “Tidak ada data dalam session”. $request->session()->has(‘nama’) berfungsi untuk mengecek jika ada session ‘nama’. $request->session()->get(‘nama’) berguna untuk menampilkan isi session ‘nama’.
    Kita lanjut ke method buatSession(), pada method ini kita akan membuat session. Untuk membuat session kita bisa menggunakan fungsi $request->session()->put(), nama session dan isi sessionnya bisa kita isi dalam parameter method ini, misalnya $request->session()->put(‘nama’,’Agus Suratna’), berarti kita memerintahkan untuk membuat session ‘nama’ dan isi session nama tersebut adalah ‘Agus Suratna’.

    Method hapusSession() kita isi dengan perintah untuk menghapus session, kita menggunakan $request->session()->forget(‘nama’) dengan tujuan untuk menghapus data pada session nama.

Session Pada Laravel

Selanjutnya kita akan coba jalankan semua proses pengolahan session yang sudah kita buat pada proyek laravel kita. Jalankan project dengan php artisan serve, kemudian akses localhost:8000/session/tampil.

Seperti yang sudah dijelaskan sebelumnya, pada route ini kita membuat pengecekan, menampilkan isi session nama jika session nama ada, dan menampilkan “Tidak ada data dalam session” jika tidak ada data pada session nama.

Karena kita belum membuat session nama, maka yang tampil adalah “Tidak ada data dalam session.”.

Selanjutnya kita coba mengakses route “session/buat“ pada alamat localhost:8000/session/buat

Maka akan muncul pesan “Data telah ditambahkan ke session”, berarti sekarang session nama sudah berisi dengan “Agus Suratna”, sesuai yang kita perintahkan pada method buatSession() dalam controller SessionController.php.

Kita lihat hasilnya, dengan menjalankan kembali route ‘session/tampil’, dengan alamat localhost:8000/session/tampil untuk melihat isi session nama.

Sekarang kita telah mempunyai data pada session nama.

Selanjutnya kita coba hapus data yang ada pada session nama, kita jalankan route ‘session/hapus‘ pada alamat localhost:8000/session/hapus

Seperti yang kita perintah pada method hapusSession() yaitu menghapus isi session nama, maka sekarang session nama sudah kosong kembali, kita periksa kembali isi session nama, akses route ‘session/tampil‘ pada alamat localhost:8000/session/tampil

Notifikasi Dengan Session Laravel

Fitur Flash Message biasanya digunakan untuk membuat pesan notifikasi berupa pesan error, warning dan success, misalnya pada saat kita ingin memunculkan pesan notifikasi pada saat melakukan sebuah aksi atau proses pada aplikasi dan kita ngin menampilkan pesan notifikasi, maka kita bisa gunakan fitur flash() pada laravel.

Contoh lainnya misalnya pada aplikasi yang ingin kita buat, kita ingin menampilkan pesan success dengan text “Data berhasil disimpan” pada saat kita menginput data atau bisa juga membuat pesan notifikasi warning dengan pesan text “Maaf, data yang diinput sudah ada“.

flash() adalah fungsi/method yang digunakan untuk membuat session yang bersifat sekali pakai. Session yang kita buat dengan flash hanya akan berlaku untuk satu buah proses setelah session dibuat, sehingga fungsi flash() ini sangat efektif untuk kita gunakan pada proses yang singkat, seperti menampilkan pesan notifikasi, setelah itu session yang dibuat dengan flash langsung hilang dihapus secara otomatis.

Membuat Notifikasi Dengan Flash Message Laravel

Berikut adalah tahapan pembuatan notifikasi dengan session flash laravel :

  1. Di tutorial ini kita membutuhkan empat buah route, silahkan buat route tersebut pada routes/web.php dengan sintak seperti berikut :
    Route::get('/pesan','NotifikasiController@index');
    Route::get('/pesan/sukses','NotifikasiController@sukses');
    Route::get('/pesan/peringatan','NotifikasiController@peringatan');
    Route::get('/pesan/gagal','NotifikasiController@gagal');
  2. Karena keempat route yang kita buat di atas akan mengakses controller NotifikasiController.php, maka sekarang kita buat controller baru dengan nama NotifikasiController.php.
    php artisan make:controller NotifikasiController
  3. Buat method berikut dalam controller NotifikasiController.php
    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Session;
    
    class NotifikasiController extends Controller
    {
        public function index()
        {
            return view('notifikasi');
        }
            
        public function sukses()
        {
            Session::flash('sukses','Ini notifikasi SUKSES');
            return redirect('pesan');
        }
            
        public function peringatan()
        {
            Session::flash('peringatan','Ini notifikasi PERINGATAN');
            return redirect('pesan');
        }
            
        public function gagal()
        {
            Session::flash('gagal','Ini notifikasi GAGAL');
            return redirect('pesan');
        }
    }

    Perhatikan controller di atas, karena flash() juga sebenarnya bagian dari session laravel, maka kita wajib memanggil session terlebih dulu dengan use Session, kemudian pada method index() kita memanggil view notifikasi.blade.php.

  4. Buat view baru dengan nama notifikasi.blade.php. dalam folder resources/views
    <!Doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
    
            <title>Tutorial Notifikasi Session Laravel</title>
            <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
        </head>
    
        <body>
            <div class="container mt-5">
                <div class="row">
                    <div class="col-md-12">
                        <center>
                            <h2>Tutorial Notifikasi Dengan Session Laravel</h2>
                            <h4>
                                <a href="https://www.agussuratna.net/">WWW.AGUSSURATNA.NET</a>
                            </h4>
                        </center>
    
                        @if ($message = Session::get('sukses'))
                            <div class="alert alert-success alert-block">
                                <button type="button" class="close" data-dismiss="alert">×</button>
                                <strong>{{ $message }}</strong>
                            </div>
                        @endif
    
                        @if ($message = Session::get('gagal'))
                            <div class="alert alert-danger alert-block">
                                <button type="button" class="close" data-dismiss="alert">×</button>
                                <strong>{{ $message }}</strong>
                            </div>
                        @endif
    
                        @if ($message = Session::get('peringatan'))
                            <div class="alert alert-warning alert-block">
                                <button type="button" class="close" data-dismiss="alert">×</button>
                                <strong>{{ $message }}</strong>
                            </div>
                        @endif
    
                        <center>
                            <a href="/pesan/sukses" class="btn btn-success">NOTIFIKASI SUKSES</a>
                            <a href="/pesan/gagal" class="btn btn-danger">NOTIFIKASI GAGAL</a>
                            <a href="/pesan/peringatan" class="btn btn-warning">NOTIFIKASI PERINGATAN</a>
                        </center>
                    </div>
                </div>
            </div>
    
            <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
            <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    
        </body>
    </html>
    

    Perhatikan view di atas, kita mulai dari bagian tombol yang kita buat di atas :

    <a href="/pesan/sukses" class="btn btn-success">NOTIFIKASI SUKSES</a>
    <a href="/pesan/gagal" class="btn btn-danger">NOTIFIKASI GAGAL</a>
    <a href="/pesan/peringatan" class="btn btn-warning">NOTIFIKASI PERINGATAN</a>

    Jika kita klik pada tombol “NOTIFIKASI SUKSES”, maka halaman akan diarahkan ke route ‘/pesan/sukses‘. Pada route ‘/pesan/sukses’ akan mengakses method sukses() pada controller NotifikasiController.php. Pada method inilah kita buat session flash().

    public function sukses()
    {
        Session::flash('sukses','Ini notifikasi SUKSES');
        return redirect('pesan');
    }

    Pada method sukses() ini kita buat session flash() dengan nama sessionnya adalah “sukses”. dan isi session sukses kita isi dengan pesan notifikasi yang ingin kita buat untuk notifikasi sukses. untuk contoh ini kita buat dengan pesan “ini notifikasi SUKSES”.Karena method ini mengalihkan halaman ke method pesan() yang menampilkan view notifikasi.blade.php, perhatikan kembali view notifikasi.blade.php.

    Pada view ini kita periksa apakah ada session sukses, peringatan atau gagal, jika ada kita tampilkan pesan notifikasinya :

    @if ($message = Session::get('sukses'))
        <div class="alert alert-success alert-block">
            <button type="button" class="close" data-dismiss="alert">×</button>
            <strong>{{ $message }}</strong>
        </div>
    @endif
    
    @if ($message = Session::get('gagal'))
        <div class="alert alert-danger alert-block">
            <button type="button" class="close" data-dismiss="alert">×</button>
            <strong>{{ $message }}</strong>
        </div>
    @endif
    
    @if ($message = Session::get('peringatan'))
        <div class="alert alert-warning alert-block">
            <button type="button" class="close" data-dismiss="alert">×</button>
            <strong>{{ $message }}</strong>
        </div>
    @endif

    Kemudian bagian terakhir dari method ini akan mengalihkan halaman kembali ke route ‘pesan’.

 

Sekarang kita coba jalankan projectnya dengan perintah php artisan serve dan akses ke alamat localhost:8000/pesan.

Kita coba klik tombol NOTIFIKASI SUKSES. maka muncul pesan notifikasi sukses, lengkap dengan pesan notifikasi yang sudah kita buat, coba klik tombol notifikasi gagal. Dan jika kita reload halaman. maka pesan notifikasi tersebut akan hilang.

Karena sesuai dengan yang sudah dijelaskan tentang pengertian dan kegunaan session flash di atas tadi, session flash hanya aktif untuk sekali proses, setelah itu akan langsung dihapus otomatis, sehingga efektif untuk membuat notifikasi jangka pendek.

Ini hanya simulasi contoh sederhana tentang cara membuat pesan notifikasi dengan session flash pada laravel, metode ini bisa kita terapkan pada aplikasi kita misalnya untuk membuat pesan notifikasi pada CRUD, misalnya jika data telah diinput, maka langsung mungul notifikasi bahwa “Data telah diinput” atau membuat notifikasi pada saat data dihapus dengan notifikasi “data berhasil dihapus”.

Caranya mudah, pertama panggil class session laravel nya dengan use session, kemudian sebelum mengalihkan halaman, buat session flash-nya, beri nama dan isi sessionnya. Kemudian pada view-nya kita buat pengecekan untuk menampilkan notifikasi session flashnya.

Fitur flash ini bisa kita kembangkan lagi dan bisa kita terapkan pada aplikasi yang kita buat menggunakan Laravel atau kita juga bisa menggunakan sweet alert untuk menampilkan pesan errornya.

Demikian tutorial mengenai session dan notifikasi pada Laravel, penggunaan session  masih sama seperti pada penggunaan session pada php native. Untuk penerapannya, kita bisa kembangkan lagi dan silahkan terapkan pada project aplikasi yang menggunakan Laravel, sesuai dengan proses alur yang kira-kira kita butuhkan session, seperti login, add to cart dan lain-lain.

Untuk dokumentasi tentang session laravel dari situs resmi laravel, teman-teman bisa membacanya di sini.

Semoga bermanfaat, jika ada pertanyaan silahkan tuliskan di kolom komentar.

Exit mobile version