Dalam konteks bahasa pemrograman, validasi mengacu pada proses memeriksa sintaks dan semantik dari kode yang ditulis dalam bahasa pemrograman tertentu untuk memastikan sesuai dengan aturan dan standar bahasa tersebut. Proses validasi membantu mengidentifikasi kesalahan, potensi bug, dan kepatuhan terhadap “Best Practice Code” sebelum kode dieksekusi atau diterapkan, sehingga mengurangi risiko perilaku yang tidak terduga dan meningkatkan kualitas kode. Di Laravel validasi mengacu pada proses memvalidasi data masukan pengguna untuk memastikan bahwa data tersebut memenuhi aturan dan persyaratan tertentu sebelum diolah oleh aplikasi. Laravel menyediakan sistem validasi yang kuat dan mudah digunakan yang membantu para pengembang mendefinisikan aturan-aturan untuk data masukan dan dengan mudah memeriksa kesalahan.
Cara Membuat Validasi Pada Controller Laravel
Laravel menyediakan beberapa pendekatan berbeda untuk memvalidasi data yang masuk kedalam aplikasi. Method yang paling umum digunakan adalah menggunakan metode validate
yang tersedia pada semua permintaan HTTP masuk. Namun, kami juga akan membahas tentang pendekatan lainnya dalam pembuatan validasi.
Laravel memiliki berbagai aturan validasi yang dapat diterapkan pada data di aplikasi anda, bahkan memiliki kemampuan untuk mengetahui apakah data yang di aplikasi merupakan data unik di tabel database tertentu. Kali ini kita akan membahas bagaimana cara membuat validasi di laravel.
1. Cara Cepat untuk Membuat Validasi di Laravel
Untuk belajar cara menggunakan menggunakan validasi di laravel, mari kita lihat contoh membuat form validasi dan menampilkan errornya kepada user.
Langkah 1: Membuat Route
Disini asumsikan kalau kita memiliki route yang berada di direktori routes/web.php
:
use App\\Http\\Controllers\\UserController;
Route::get('/user/create', [UserController::class, 'create']);
Route::post('/user', [UserController::class, 'store']);
Method GET
akan menampilkan sebuah form untuk user untuk membuat user baru, dan Method POST
akan menambahkan user baru kedalam database.
Langkah 2: Membuat Controller
Kemudian kita akan membuat sebuah controller yang akan menangani permintaan yang diterima oleh routes yang sudah kita buat.
<?php
namespace App\\Http\\Controllers;
use App\\Http\\Controllers\\Controller;
use Illuminate\\Http\\RedirectResponse;
use Illuminate\\Http\\Request;
use Illuminate\\View\\View;
class UserController extends Controller
{
/**
* Untuk menampilkan form untuk menambahkan user baru.
*/
public function create(): View
{
return view('user.create');
}
/**
* Untuk menangani permintaan menambah data.
*/
public function store(Request $request): RedirectResponse
{
// Validasi dan store dari user controller...
$user = /** ... */
return to_route('user.show', ['user' => $user->id]);
}
}
Langkah 3: Membuat Validasi
Selanjut, kita sudah bisa mengisi store
method yang sudah dibuat dengan logic untuk memvalidasi user baru yang akan ditambahkan. Kita akan menggunakan validate
method yang disediakan laravel dari kelas Illuminate\\Http\\Request
dan jika validasi berhasil, user baru akan ditambahkan. Namun jika validasi gagal, sebuah exception akan muncul untuk menangani error, dan tampilan error akan dikirimkan kepada user.
Untuk lebih memahami apa yang sudah dijelaskan, kita bisa lihat pada store
method ini:
/**
* Untuk menangani permintaan menambah data.
*/
public function store(Request $request): RedirectResponse
{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users|max:255',
'age' => 'required|integer|min:18',
]);
// Process the validated data
}
Langkah 4: Menampilkan Tampilan Validasi Errors
Kita sudah membuat validasi untuk setiap data, lalu bagaimana cara menampilkannya? Laravel memberikan kita kemudahan dalam menanganinya. Semua errors yang terjadi kita proses validasi akan menjadi sebuah Flash Data yang akan dikirim kepada sesi yang sedang dijalankan. Flash Data
ini menjadi sebuah variabel $errors
secara otomatis oleh laravel, yang disediakan oleh kelas Illuminate\\View\\Middleware\\ShareErrorsFromSession
yang merupakan bagian dari web middleware
grup yang disediakan oleh laravel. Ketika middleware
diterapkan, variabel $errors
akan selalu bisa di akses oleh anda, dan memungkinkan variabel errors
selalu bisa digunakan dan didefinisikan.
Pada contoh ini, user yang sudah menambahkan data akan diarahkan ke create
method yang ada di controller yang sudah kita buat. Ketika validasi gagal, kita akan menampilkan error tersebut kedalam view:
<!-- /resources/views/user/create.blade.php -->
<h1>Create User</h1>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- Create User Form -->
Langkah 5: Memanggil Pesan Error Pada Atribut Data
Kemudian kita perlu menambahkan variabel $errors
kedalam setiap atribut data yang telah divalidasi. Mari kita lihat contohnya bagaimana cara menambahkannya:
<!-- /resources/views/user/create.blade.php -->
<label for="title">User Title</label>
<input id="name"
type="text"
name="name"
class="@error('name') is-invalid @enderror">
@error('name')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
Dengan variabel $message
kita akan dapat menampilkan jika ada validasi yang gagal.
2. Membuat Validasi Menggunakan Form Request
Form Requests merupakan sebuah kelas kustom untuk menangani validasi secara lebih spesifik. Jika kita ingin membuat validasi yang bisa dikatakan “Best Practice” kita perlu membuat kelas yang dikhususkan untuk menangani validasi tertentu.
Langkah 1: Membuat Kelas Form Request
Untuk membuat Form Requests kita bisa memakai method Artisan Laravel make:request
didalam command line kita:
php artisan make:request StoreUserRequest
Kelas yang sudah dibuat, akan dimasukkan secara otomatis kedalam direktori app/Http/Requests
.
Langkah 2: Mendefinisikan Validasi
Kemudian, buka kelas UserControllerStoreRequest.php
yang sudah dibuat, anda akan menemukan rules
method yang merupakan tempat untuk memasukkan logic validasi untuk data yang diterima.
Asumsikan kita memiliki data name, email, dan password, kemudian validasi yang diberikan adalah sebagai berikut:
namespace App\\Http\\Requests;
use Illuminate\\Foundation\\Http\\FormRequest;
class UserControllerStoreRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email|max:255',
'password' => 'required|string|min:8|max:255',
];
}
}
Langkah 3: Menggunakan Kelas Form Request pada UserController
Sekarang anda sudah membuat kelas Form Request, kita akan menggunakan validasi yang sudah dibuat didalam UserController's store
method. Buka file UserController.php
yang ada di direktori app/Http/Controllers
.
public function store(StoreRequest $request): RedirectResponse
{
// Permintaan yang masuk sudah divalidasi pada saat ini.
// Jika data tidak memenuhi aturan yang ditentukan, Laravel akan mengembalikan respons dengan error secara otomatis.
// Sekarang Anda dapat membuat pengguna baru menggunakan data yang telah divalidasi.
$user = new User([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);
// Simpan pengguna ke dalam database.
$user->save();
// Kembalikan respons yang menunjukkan keberhasilan menambahd data.
return redirect()->route('nama.rute.anda')->with('success', 'Pengguna berhasil dibuat');;
}
}
Langkah 4: Menampilkan Validasi Error
Sama seperti sebelumnya, kita akan memberikan validasi pada atribut data yang ada di blade. Dengan begitu user dapat melihat kesalahan dan memperbaikinya. Contohnya kita akan memberikan atribut data name
di blade untuk divalidasi:
<input type="text" name="name" class="@error('name') border-red-500 @enderror">
@error('name')
<div class="text-red-500">{{ $message }}</div>
@enderror
Kesimpulan
Validasi data masukan dari pengguna sangat penting untuk memastikan bahwa data yang diterima sesuai dengan aturan yang telah ditentukan sebelum diproses lebih lanjut. Dengan mengimplementasikan validasi menggunakan Form Request, kita dapat memastikan bahwa data yang masuk ke sistem telah melewati berbagai aturan validasi dan aman untuk digunakan.
Jika ingin belajar lebih banyak mengenai laravel, di BuildWithAngga kita menyediakan Kelas Online bagi anda yang ingin menguasai laravel. Bagi anda yang pemula dan ingin belajar laravel, kita punya Tips untuk belajar laravel bagi pemula. Di BuildWithAngga juga kita punya Kelas yang yang mudah untuk dipahami oleh pemula. Dengan belajar di platform BuildWithAngga anda juga dapat menambah portofolio dan menambah ilmu untuk memulai karir dibidang ini. Karena dari BuildWithAngga, #semuabisabelajar