FORUM REQUEST VALIDATION
Tujuan Pembelajaran
Setelah modul ini, Mahasiswa
diharapkan mampu:
1.
Memahami konsep validasi form di Laravel.
2.
Membuat Form Request Validation untuk
memvalidasi input.
3. Menampilkan error dengan jelas kepada pengguna.
4. Mengeksplorasi aturan validasi standar dan custom.
1. Pengenalan Form Request Validation
Apa itu Form Request Validation?
•
Form Request Validation memisahkan logika validasi dari controller.
• Membuat kode lebih rapi, aman, dan mudah diuji.
1. Buat
form HTML sederhana:
<form method="POST"
action="/register">
<input type="text"
name="name" placeholder="Nama">
<input type="email"
name="email" placeholder="Email">
<input type="password"
name="password" placeholder="Password">
<button
type="submit">Daftar</button>
</form>
2. Coba
kirim data yang salah, misal email tidak valid.
3. Amati
apa yang terjadi jika validasi tidak
diterapkan.
Note: Data bisa masuk database tanpa validasi → berisiko error
& keamanan.
2. Membuat Form Request
1. Jalankan
command artisan:
php artisan make:request
StoreUserRequest
2. Atur
rules di app/Http/Requests/StoreUserRequest.php:
public function rules()
{
return [
'name' => 'required|string|max:50',
'email' =>
'required|email|unique:users,email',
'password' =>
'required|min:8|confirmed'
];
}
catatan:
•
Ubah max:50 menjadi max:5. Kirim nama lebih
panjang → apa yang terjadi?
•
Ubah required menjadi nullable. Apa yang berubah
pada form? 3. Menghubungkan Request ke
Controller use App\Http\Requests\StoreUserRequest; public function
store(StoreUserRequest $request)
{
User::create($request->validated()); return
redirect()->back()->with('success', 'User berhasil didaftarkan');
}
Catatan:
•
$request->validated() otomatis hanya
mengambil data yang valid.
•
Controller lebih bersih, semua logika validasi
di Form Request. 4. Menampilkan Error ke
User
Tambahkan di Blade view:
@if ($errors->any())
<div class="alert
alert-danger">
<ul>
@foreach ($errors->all() as
$error)
<li>{{ $error
}}</li>
@endforeach
</ul>
</div>
@endif
catatan:
•
Kirim input salah → error muncul.
•
Ubah teks error default di Form Request: public
function messages()
{ return [ 'name.required' => 'Nama wajib
diisi!',
'email.email' => 'Format email tidak
valid!',
];
}
• Uji coba lagi, lihat perbedaan pesan error.
5. Validasi Lanjutan & Custom
Contoh validasi custom:
'username' => ['required',
'alpha_dash', function ($attribute, $value, $fail) { if ($value === 'admin') {
$fail('Username tidak boleh
"admin".');
}
}],
Catatan:
•
Input “admin” → muncul error custom.
•
Coba validasi conditional required_if, required_with.