Bagaimana Cara Memvalidasi Form di Laravel ?
Pada tulisan kali ini kita akan membahas tentang validasi, validasi form, bagai mana si caranya validasi dilaravel. validasi dan form ini suda tidak bisa terpisahkan lagi, untuk menghindari perusakan aplikasi dengan metode injection. Seperti XSS Injection misalnya.
Validasi Menggunakan Facade Validator
Tutorial penggunaan facade Validator
umum kita temui di berbagai artikel yang membahas Laravel. Penggunaannya sederhana, kita cukup mengimpor facade tersebut, kemudian mendefinisikan rule yang akan dipakai.
Argumen pertama pada method make()
merupakan array berpasangan berupa key dan value. Kelebihan menggunakan cara ini adalah, kita bisa memvalidasi inputan dari HTTP verbGET
.
Jangan lupa untuk memastikan datanya benar-benar valid dengan method fails()
.
Menggunakan Helper dari Controller
Pada controller, terdapat sebuah parent method dengan nama validate()
. Method ini dapat digunakan untuk memvalidasi masukan dari form. Caranya serupa dengan di atas, yang membedakan adalah, jika argumen pertama pada method make()
dalam facade Validator berupa array — key dan value — , maka pada method validate()
harus berupa instanceof Request
.
$request = new Request;dd($request instanceof Request); // true
dd($request instanceof Validator); // false
Bagi yang terbiasa dengan Microframework Lumen, pasti sudah tidak asing dengan helper di atas. Karena, hanya cara inilah yang didukung oleh Lumen untuk memvalidasi masukan.
Apabila validasi gagal, maka aplikasi akan mengembalikan response daftar field yang tidak valid. Jadi, kita tidak perlu mengeceknya secara manual layaknya penggunaan facade Validator
.
Menggunakan Form Request
Cara ini sedikit lebih panjang dan rumit di awal, tapi kita bakal punya kontrol lebih banyak untuk validasi.Validation – Laravel – The PHP Framework For Web ArtisansLaravel – The PHP framework for web artisans.laravel.com
Pertama, berkas validasi yang dibuat berada terpisah dengan controller. Ya, kita harus membuat berkas dan class baru di direktori lain. Tenang saja, command untuk membuat Form Request sudah tersedia pada Artisan Console.
$ php artisan make:request SendRequest
Apabila command berhasil, akan didapati sebuah berkas dengan nama SendRequest.php
pada direktori app/Http/Requests
. Buka berkas tersebut dan tambahkan aturan validasi dalam method rules()
. Perlu diketahui, nilai kembaliannya harus berupa array dalam format seperti dua validasi di atas.
Pastikan nilai kembalian dari method authorize()
adalah true
untuk memastikan pengguna dapat melanjutkan ke proses validasi. Method authorize()
ini nantinya dapat digunakan dalam berbagai keperluan, semisal hanya pengguna yang sudah login yang dapat mengisi formulir dan melanjutkan proses validasi.
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() : bool
{
return \Auth::check();
}
Langkah berikutnya, mengimplementasikan Form Request tersebut pada controller dan method yang berfungsi menerima masukan.Validator
Ada beberapa keuntungan menggunakan Form Request:
- Controller menjadi lebih ramping dan lebih mudah dibaca.
- Validasi masukan berada pada satu tempat, sehingga mudah untuk perawatan dan debugging.
- Mendukung berbagai berbagai HTTP verb seperti
POST
,DELETE
,PUT
— dalam pengkondisian — . Khusus poin ini, menggunakan facadeValidator
pun juga dimungkinkan.
Sebagai contoh, dapat dilihat pada potongan skrip berikut:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'name' => 'required|max:30',
]; if (request()->isMethod('post')) {
$rules['name'] = 'required|max:100|email';
} if (request()->isMethod('delete')) {
$rules['id'] = 'required|int';
} return $rules;
}
demikian semoga bermanfaat….