Assalamu'alaikum Warahmatullahi Wabarakatuh


Setelah kita berinteraksi dengan Database pada postingan sebelumnya, kali ini kita akan mendalami lagi cara berinteraksi dengan Database menggunakan Laravel. Pada postingan sebelumnya kita memiliki tabel t_kelas nah pada kesempatan kali ini, kita juga akan menggunakan kembali tabel tersebut untuk lebih mendalami lagi cara berinteraksi dengan Database. Bagi kalian yang ingin mengikuti tutorial ini, Mimin sarankan untuk melihat postingan sebelumnya terlebih dahulu agar kalian bisa paham secara utuh tentang berinteraksi dengan Database pada Laravel. Silahkan kalian Kunjungi link berikut "Laravel : Controller & Berinteraksi Dengan Database".

Dalam kesempatan kali ini kita akan membahas beberapa hal yang menarik Sob, yaitu sebagai berikut:
  • Membuat Data Kelas Baru, dengan Menambahkan Form Input Data
  • Membuat Validasi Terhadap Form Yang Telah Kita Buat
  • Menampilkan Data Sebelumnya Pada Form Yang Di Validasi
Oke langsung aja kita lanjut ke tutorialnya Sob! 😄

#Membuat Form Input Data Kelas

Hal yang pertama, yang harus kalian lakukan adalah menambahkan link diatas tabel index yang pernah kita buat :

Menambahkan link

Kita menambahkan sebuah link, yang isinya adalah nama Route yang nanti kita akan tambahkan pada KelasController.php. Link ini akan diarahkan pada pada halaman Form data Kelas yang nantinya juga akan kita buat, untuk menampung inputan data.

#Menambahkan Route Baru

Kita akan menambahkan sebuah Route baru pada web.php yang bernama sekolah/create. Pada Route ini kita akan memanggil KelasController dan method create yang nantinya akan kita buat.

Membuat Route Baru

Setelah kita menambahkan Route baru maka kita harus memodifikasi isi dari file KelasConttroller.php. Kita akan menambahkan sebuah method create yang berfungsi untuk memanggil sebuah View yang didalamnya berisi Form inputan data kelas yang akan kita buat juga.

Membuat method baru

Mengapa "return view ('kelas.form')", bukannya harusnya "return view ('form')" yah Min? ouh ngga kok Sob, kalau kita menuliskan seperti ini, berarti dalam folder Views kita membuat sebuah folder baru bernama kelas, yang didalamnya bersisi file View form inputan data kelas kita Sob. Jadi singkatnya ini adalah cara pemanggilan sebuah View apabila berada di dalam sebuah folder pada project kita Sob 😄

#Membuat Tampilan Form dan Menggunakan CRSF

Apa itu CRSF ? singkatnya, ini merupakan salah satu teknik security yang ada pada web, untuk mencegah terjadinya serangan dari luar. Ya istilahnya kerennya itu untuk memprotect web kita dari yang namanya orang jahil atau Hacker 😅. Jika kalian tertarik mendalami CRSF kalian bisa baca selengkapnya di referensi satu ini.

Oke balik lagi ke pembahasan, silahkan kalian buat sebuah folder di dalam folder views, lalu di beri nama kelas, nah setelah kalian buat folder kelas, maka kalian buat file baru bernama form.blade.php di dalam folder kelas itu. Jadi struktur jelasnya itu seperti ini Sob : 

Struktur folder

Lalu pada file tersebut kalian isi sebagai berikut : 

Isi file form

Pada file ini, ada beberapa hal yang harus kalian perhatikan secara seksama. Mimin sudah berikan garis merah, perlu diingat ketiga komponen ini sangat penting bagi form kita.
  • Action, Setelah kita melakukan proses inputan, lalu kita mensubmit data yang ingin kita kirim, kita harus menuliskan kemanakah data yang telah kita submit, akan di proses atau diolah.
  • Method, Ini menjelaskan method apa yang akan kita gunakan pada form kita, baik itu POST ataupun GET
  • @crsf, Ini merupakan proteksi pada form kita, yang sebelumnya sudah Mimin jelaskan diatas
Setelah kita membuat View nya, maka selanjutnya kita akan menambahkan sebuah Route baru lagi, yang akan digunakan untuk mengirimkan data ke Database.

#Membuat Route Baru (Lagi)

Kita akan membuat Route untuk mengirimkan data yang telah kita inputkan pada form sebelumnya. Kenapa menggunakan Route baru ? ini agar memisahkan fungsi fungsi yang kita buat agar lebih tertata dengan rapih, dan konsep MVC yang digunakan bisa lebih terlaltih. Silahkan kalian tambahkan sebuah Route baru pada file web,php kalian sebagai berikut : 

Membuat Route baru lagi

Kali ini karena kita akan mengirimkan data ke Database, maka method yang kita gunakan sekarang adalah post, bukan lagi get, karena dengan method post, data yang kita kirimkan tidak akan terlihat, alias dikirim secara rahasia. Berbeda dengan ketika kita menggunakan get, maka data yang kita kirim, bisa kita lihat pada address bar. Setelah itu, maka kita harus membuat sebuah method dengan nama store pada KelasController, dengan method ini kita akan memasukan data inputan ke dalam Database yang kita miliki. Silahkan kalian isi dengan kode sebagai berikut : 

Method create

Dengan ini kita telah membuat sebuah method yang berfungsi untuk mengirimkan data yang nantinya akan kita inputkan pada form yang telah dibuat. 

Silahkan kalian coba form yang telah kalian buat, jika belum berhasil coba cek kembali penulisan penulisannya. Biasanya error terjadi karena kesalahan penulisan. Mimin akan mencoba memasukan sebuah kelas baru pada form yang baru saja kita buat.


Input Data Baru

Mimin memasukan data seperti di atas, lalu ketika Mimin tekan tombol Simpan, maka data akan masuk ke Database, dan akan ditampilkan.

Data berhasil masuk

Setelah data kita berhasil masuk, maka kita harus memberi tahu User bahwa dia berhasil memasukan data, maka dari itu kita akan mengirimkan pesan Success atau Error kepada User, jika kalian perhatikan pada method create, ada blok kode if-else, nah kita akan menangkap pesan itu pada halaman index.

Silahkan tambahkan kode berikut, pada file form.blade.php :

Menangkap pesan berhasil atau error

Setelah kita tambahkan kode diatas, lalu kita tambahkan kembali data baru ke dalam Database kita. Maka sekarang akan muncul pesan apakah berhasil dimasukan atau gagal dimasukan. Seperti berikut ini :

Data berhasil dimasukan

#Validasi Inputan Form

Ketika User menginputkan data pada Form, kita tidak mau mereka memasukan data seenaknya saja. Karena itu akan berbabahaya bagi Database kita, dan berpotensi mengacak ngacak Database yang kita miliki. Maka dari itu kita harusnya menyiapkan sebuah Rules atau peraturan bagi siapa saja yang ingin menginputkan data pada form kita. Silahkan kalian buka file form.blade.php dan tambahkan kode berikut :

Menambahkan pesan error

Jangan lupa, setelah itu kita buat sebuah aturan pada method store, yang sebelumnya kita telah buat, silahkan kalian tambahkan kode berikut ini :

Membuat rules

Ini artinya kita memberikan aturan aturan pada form yang kita buat, ini penjelasan setiap inputan :

  • nama_kelas, Pada inputan ini, required ( ini artinya inputan ini harus diisi, tidak boleh kosong ), unique:t_kelas ( ini artinya apabila nama kelas pernah ada atau sudah ada pada tabel t_kelas maka inputan akan meminta inputan lain, yang tidak sama dengan yang ada pada Database ), min:4 ( ini artinya inputan nama_kelas minimal 4 buah karakter )
  • jurusan, Pada inputan ini, required dan inputan harus berupa String
  • lokasi_ruangan, Pada inputan ini, required dan inputan harus berjumlah 4 karakter
  • nama_wali_kelas, Pada inputan ini required
Jadi, jika Mimin memasukan inputan tanpa menuruti aturan atau menyalahi aturan, maka akan muncul error di atas inputan kita. Contohnya adalah seperti ini :

Jika inputan tidak seuai dengan aturan

#Menampilkan Value Inputan Sebelumnya

Pada saat melakukan Validasi, pada hakikatnya halaman kita sedang di reload, ketika halaman kita di reload, maka inputan sebelumnya yang pernah kita masukan akan hilang. Maka dari itu Laravel menyediakan fitur old, untuk mengecek value sebelumnya agar bisa digunakan kembali saat Validasi. Ini berguna untuk memudahkan User apabila tidak ingin menginputkan lagi secara datanya secara manual, mungkin jika inputan nya masih sedikit, hal ini bukanlah sebuah masalah. Namun bagaimana jika inputannya lebih dari 10?. Tentu itu akan membuat cape orang yang memasukan data.

Ada beberapa tipe inputan yang akan kita bahas cara penggunaan Old valuenya :

1) TextField 

Kita bisa langsung memasukan kode old dari Laravelnya, sebagai berikut : 

Cara menggunakan old pada jenis text

2) Radio Button

Agak sedikit berbeda dengan text, kali ini kita menggunakan if statement untuk mengeceknya :

Cara menggunakan old pada jenis radio

3) Select Option

Caranya hampir sama dengan radio button :

Cara menggunakan old pada jenis select

#Bug Yang Mimin Temukan

Sebelum membuat Inputan Data Kelas, Mimin sebelumnya membuat sebuah Inputan Data Siswa. Mimin menemukan Bug ini ketika Mimin mengalami Error di Laravel. Pada saat itu Mimin hendak mencoba menginputkan data dan melakukan validasi, namun ternyata validasinya error. Mimin kaget ketika berhasil mengatasi error itu, Data yang Mimin masukan meskipun NIS nya sama, masih bisa berhasil dimasukan, padahal tidak boleh seperti itu. Karena yang namanya NIS hanya dimiliki satu dari setiap orang, jadi tidak boleh ada Siswa yang memiliki NIS yang sama. Ada dua cara yang bisa dilakukan jika menurut Mimin :

1) Mengganti Kolom NIS Menjadi Primary Key Pada Tabel t_siswa

Ini bisa dilakukan, karena dari defaultnya MySQL memiliki fungsi untuk mengecek apakah data berjenis Primary Key pernah ada atau tidak. Karena apabila ada, maka MySQL akan menampilkan Error "Duplicate Entry". Artinya tidak boleh memasukan nilai yang sama, apabila itu field itu berstatus Primary Key

2) Menggunakan Rules Validation Pada Laravel

Karena kali ini kita membahas tentang Laravel, maka Mimin juga siapkan penyelesaian masalah tersebut dengan menggunakan Rules Validation pada Laravel. Untuk mengecek apakah data itu pernah dimasukan atau tidak, kita bisa menggunakan salah satu Ruls Validation yaitu "Unique". Dengan menggunakan Rules ini, meskipun field tersebut bukan Primary Key, maka akan tetap di cek apakah data pernah dimasukan atau tidak. Jika sudah maka akan tampil pesan error dan User akan diminta untuk memasukan value yang lain, yang tidak sama dengan data yang sudah ada. Berikut cara penggunaannya :

Rules Unique

Maka apabila kita memasukan NIS yang pernah kita masukan sebelumnya, maka akan muncul error sebagai berikut : 

Error apabila memasukan NIS yang sudah ada

Waaaah 😄 sangat panjang sekali yah pembahasan hari ini. Tapi ngga apa apa Sob, ini Mimin lakuin buat kalian semua kok 😄, semoga tutorial Mimin kali ini bisa bermanfaat untuk kalian semua, Semangat Sob! 😄

Quotes

Semua rasa lelah akan hilang, jika setiap hal yang kita lakukan diniatkan karena Allah - Zeptian


Wassalamu'alaikum Warahmatullahi Wabarakatuh 

1 Komentar

  1. bagus tutorial nya .. ada penjelasan.
    kalau boleh saaya bertanya.. bagaimana jika form dialog ?

    BalasHapus