Last Updated on December 29, 2021 by
Setiap data yang masuk ke suatu sistem harus melalui proses validasi. Validasi atau validation dalam istilah pemrograman adalah proses pengecekan data yang masuk. Secara default, berbagai bahasa pemrograman maupun framework menyediakan validate, termasuk juga Laravel. Validate Laravel dilakuan dengan menggunakan kelas pengontrol dasar yang menggunakan sifat Validates Requests untuk memvalidasi semua permintaan Http yang masuk.
Pada artikel ini kita akan membahas lebih banyak tentang Laravel Validation dan bagaimana cara membuat validate laravel denga mudah. Jika Anda ingin tahu cara membuat laravel validation, simak penjelasan lengkap tentang validation di framework Laravel berikut ini.
Table of Contents
Laravel Validation : Apa itu Validate Laravel?
Validation adalah aspek yang paling penting ketika Anda membuat desain suatu aplikasi. Validation dalam framework manapun, termasuk juga Laravel, digunakan untuk memvalidasi data-data yang masuk. Biasanya, ia dipakai dengan menggunakan kelas controller dasar yang sudah tersedia di dalam suatu bahasa pemrograman yaitu ValidatesRequests.
Lumen memberikan Anda cara paling mudah untuk memvalidasi permintaan HTTP yang masuk dengan beberapa aturan validasi yang ketat.Laravel selalu memeriksa data sesi untuk kesalahan dan secara otomatis mengikat ke tampilan jika memungkinkan.
Jadi, penting untuk dicatat bahwa variabel $errors akan selalu tersedia di semua tampilan Anda pada setiap permintaan, memungkinkan Anda untuk dengan mudah mengasumsikan variabel $errors selalu didefinisikan dan dapat digunakan dengan aman. Tabel berikut menunjukkan semua aturan validasi yang tersedia di Laravel.
Laravel dikirimkan dengan fasilitas sederhana dan nyaman untuk memvalidasi data dan mengambil pesan kesalahan validasi melalui kelas Validator. Ini dia contoh Validate Laravel dengan kode:
$validator = Validator::make( ['name' => 'Dayle'], ['name' => 'required|min:5'] );
Data yang sedang divalidasi merupakan argumen pertama yang diteruskan dari metode make. Argumen kedua adalah aturan validasi yang harus diterapkan pada data. Anda juga bisa gunakan array untuk aturan yang spesifik. Beberapa aturan dapat dibatasi menggunakan karakter “pipe”, atau sebagai elemen array yang terpisah.
$validator = Validator::make( ['name' => 'Dayle'], ['name' => ['required', 'min:5']] );
Anda juga bisa melakukan validasi pada banyak bidang.
$validator = Validator::make( [ 'name' => 'Dayle', 'password' => 'lamepassword', 'email' => 'email@example.com' ], [ 'name' => 'required', 'password' => 'required|min:8', 'email' => 'required|email|unique:users' ] );
Setelah instance Laravel Validator dibuat, metode ‘fails’ atau ‘passes’ dapat digunakan untuk melakukan validasi.
if ($validator->fails()) { // The given data did not pass validation }
Jika Laravel Validation gagal, Anda dapat mengambil pesan kesalahan dari validator.
$messages = $validator->messages();
Anda juga dapat mengakses array yang berisi aturan validasi yang gagal (fail), tanpa pesan. Untuk melakukannya, gunakan metode ‘failed’:
$failed = $validator->failed();
Validate Laravel untuk Sebuah File
Kelas Validator menyediakan beberapa rules untuk melakukan validasi file seperti ‘size’ atau ukuran, ‘mimes’ atau peniruan, dan masih banyak lagi rules lainnya dalam Validate Laravel. Saat memvalidasi file, Anda cukup meneruskannya ke validator dengan data Anda yang lain.
After Laravel Validation Hook
Validator juga memungkinkan Anda untuk melampirkan panggilan balik untuk dijalankan setelah validasi selesai. Ini memungkinkan Anda untuk dengan mudah melakukan validasi lebih lanjut, dan bahkan menambahkan lebih banyak pesan kesalahan ke kumpulan pesan. Untuk memulai, gunakan metode ‘after’ pada instance validator :
$validator = Validator::make(...); $validator->after(function($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); if ($validator->fails()) { // }
Anda mungkin ingin menambahkan callback ‘after’ untuk melakukan validator yang dibutuhkan.
Controller Laravel Validation
Tentu saja, membuat dan memeriksa instance Validator Laravel secara manual setiap kali Anda melakukan validasi adalah hal yang memusingkan. Namun, jangan khawatir! Anda masih punya pilihan lain.
Kelas App\Http\Controllers\Controller dasar yang disertakan dengan Laravel menggunakan sifat ValidatesRequests. Sifat ini menyediakan metode tunggal yang nyaman untuk memvalidasi permintaan HTTP yang masuk. Berikut tampilannya:
/** * Store the incoming blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $this->validate($request, [ 'title' => 'required|unique|max:255', 'body' => 'required', ]); // }
Jika validasi lolos, kode Anda akan tetap dieksekusi secara normal. Namun, jika validasi gagal, Illuminate\Contracts\Validation\ValidationException akan ditampilkan. Pengecualian ini secara otomatis ditangkap dan pengalihan dibuat ke lokasi pengguna sebelumnya. Kesalahan validasi bahkan secara otomatis di-flash ke sesi!
Jika permintaan yang masuk adalah permintaan AJAX, tidak ada pengalihan yang akan dibuat. Sebagai gantinya, respons HTTP dengan kode status 422 akan dikembalikan ke browser yang berisi representasi JSON dari kesalahan validasi.
Misalnya, berikut adalah kode yang setara yang ditulis secara manual:
/** * Store the incoming blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $v = Validator::make($request->all(), [ 'title' => 'required|unique|max:255', 'body' => 'required', ]); if ($v->fails()) { return redirect()->back()->withErrors($v->errors()); } // }
Menyesuaikan Format Flashed Error
Jika Anda ingin menyesuaikan format kesalahan validasi yang di-flash ke sesi saat validasi gagal, ganti formatValidationErrors pada pengontrol dasar Anda. Jangan lupa untuk mengimpor kelas Illuminate\Validation\Validator di bagian atas file:
¬¬/** * {@inheritdoc} */ protected function formatValidationErrors(Validator $validator) { return $validator->errors()->all(); }
Cara Membuat Validate Laravel Form
Untuk skenario validasi yang lebih kompleks, Anda mungkin ingin membuat “permintaan formulir”. Permintaan formulir adalah kelas permintaan khusus yang berisi logika validasi. Untuk membuat kelas permintaan formulir, gunakan perintah make:request Artisan CLI:
php artisan make:request StoreBlogPostRequest
Kelas yang dihasilkan akan ditempatkan di direktori app/Http/Requests. Mari tambahkan beberapa aturan validasi ke metode rules:
/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'title' => 'required|unique|max:255', 'body' => 'required', ]; }
Jadi, bagaimana aturan validasi dijalankan? Cukup masukkan petunjuk kueri dalam metode pengontrol seperti di bawah ini:
/** * Store the incoming blog post. * * @param StoreBlogPostRequest $request * @return Response */ public function store(StoreBlogPostRequest $request) { // The incoming request is valid... }
Permintaan formulir yang masuk divalidasi sebelum metode pengontrol dipanggil, artinya Anda tidak perlu mengacaukan pengontrol Anda dengan logika validasi apa pun. Itu sudah divalidasi!
Jika validasi gagal, respons pengalihan dibuat dan pengguna dikembalikan ke lokasi sebelumnya. Kesalahan juga akan di-flash ke sesi sehingga tersedia untuk ditampilkan. Jika permintaan adalah permintaan AJAX, respons HTTP dengan kode status 422 akan dikembalikan ke pengguna termasuk representasi JSON dari kesalahan validasi.
Autorisasi Permintaan Form
Kelas permintaan formulir juga berisi metode Autorisasi. Dalam metode ini, Anda dapat memeriksa apakah pengguna yang diautentikasi benar-benar memiliki wewenang untuk memperbarui sumber daya yang diberikan. Misalnya, jika pengguna mencoba memperbarui komentar posting blog, apakah mereka benar-benar memiliki komentar itu? Sebagai contoh:
/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { $commentId = $this->route('comment'); return Comment::where('id', $commentId) ->where('user_id', Auth::id())->exists(); }
Perhatikan panggilan ke metode rute pada contoh di atas. Metode ini memberi Anda akses ke parameter URI yang ditentukan pada rute yang dipanggil, seperti parameter {comment} dalam contoh di bawah ini:
Route::post(‘comment/{comment}’);
Jika metode otorisasi mengembalikan false, respons HTTP dengan kode status 403 akan secara otomatis dikembalikan dan metode pengontrol Anda tidak akan dijalankan. Jika Anda berencana untuk memiliki logika otorisasi di bagian lain aplikasi Anda, cukup kembalikan true dari metode ‘authorize’ seperti di bawah ini:
/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; }
Menyesuaikan Format Flashed Error
Jika Anda ingin menyesuaikan format kesalahan validasi yang di-flash ke sesi saat validasi gagal, ganti formatErrors pada permintaan dasar Anda (App\Http\Requests\Request). Jangan lupa untuk mengimpor kelas Illuminate\Validation\Validator di bagian atas file:
/** * {@inheritdoc} */ protected function formatErrors(Validator $validator) { return $validator->errors()->all(); }
Itulah penjelasan tentang validate Laravel yang bisa Anda coba jika Anda bekerja dengan PHP dan ingin membuat form Laravel Validation untuk kebutuhan web Anda. Jangan lupa kunjungi Web App di https://appkey.id/ untuk dapatkan informasi terbaru seputar bahasa pemorgraman dan teknologi pengembangan web terkini.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.