Validasi Data di Laravel: Panduan Lengkap untuk Developer
Validasi itu penting banget di web app biar data yang masuk sesuai standar dan nggak bikin error. Laravel punya cara elegan dan simpel buat nge-handle validasi ini. Yuk, kita bahas dari yang dasar sampai yang lebih kompleks.
1. Validasi Dasar
Laravel bikin validasi data masuk jadi gampang. Biasanya pakai metode validate
dari Request
:
use Illuminate\Http\Request;
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
]);
// Kalau validasi lolos, lanjut simpan data
}
Kalau validasi gagal, Laravel otomatis redirect dan simpan error di session, siap ditampilkan di view.
2. Pesan Error Kustom
Biar user experience lebih enak, kamu bisa kasih pesan error sendiri:
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
], [
'name.required' => 'Tolong masukkan nama Anda.',
'email.required' => 'Kami perlu alamat email Anda!',
'password.min' => 'Password minimal 8 karakter.',
]);
3. Validasi dengan Form Request
Kalau validasi lebih kompleks, mending pakai Form Request:
php artisan make:request StoreUserRequest
Di class StoreUserRequest
:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed',
];
}
}
Controller cukup pakai class ini:
use App\Http\Requests\StoreUserRequest;
public function store(StoreUserRequest $request)
{
$validatedData = $request->validated();
// Lanjut simpan data
}
4. Validasi Kondisional
Kadang, validasi harus berlaku hanya jika input tertentu ada:
$request->validate([
'email' => 'required|email',
'password' => 'sometimes|required|min:8|confirmed',
]);
Password cuma diperiksa kalau ada di input.
5. Validasi Kompleks dengan Closure
Bisa juga pakai closure untuk aturan custom:
use Illuminate\Validation\Rule;
$request->validate([
'email' => [
'required',
'email',
function ($attribute, $value, $fail) {
if ($value === 'test@example.com') {
$fail($attribute.' tidak valid.');
}
},
],
]);
6. Validasi Array
Kalau input berupa array, Laravel juga mendukung:
$request->validate([
'photos.*' => 'image|mimes:jpg,jpeg,png|max:2048',
]);
Setiap file di array photos
harus berupa gambar maksimal 2MB.
Kesimpulan
Laravel punya sistem validasi yang fleksibel dan powerful. Dari input sederhana sampai form kompleks, semua bisa di-handle dengan mudah. Dengan memahami dasar, pakai pesan error kustom, dan teknik lanjutan seperti validasi kondisional atau kompleks, kamu bisa bikin aplikasi yang lebih robust dan aman.