laravel form validation | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel form validation

Saturday, April 11, 2026

laravel form validation

#Laravel #FormValidation #PHP #WebDev
Artikel 18 dari 50 · Seri Belajar Laravel Lengkap

Validasi Form di Laravel:
Cara yang Benar dan Efisien

Sudah capek data asal-asalan masuk ke database? Pelajari cara validasi form yang bersih, aman, dan bikin kode kamu makin profesional — langsung dari Laravel-nya.

⏱️
Estimasi Baca
10–12 Menit
🎯
Level
Beginner–Intermediate
📅
Tahun
2025

Pernah nggak kamu asal submit form dan ternyata semua field kosong bisa masuk ke database? Atau ada user yang iseng masukin email palsu, angka negatif, atau bahkan skrip berbahaya di kolom nama? Itulah kenapa validasi form di Laravel bukan sekadar fitur tambahan — ini adalah garis pertahanan pertama aplikasimu. Dalam seri 50 Artikel Belajar Laravel ini, kita sudah bahas cara buat form di Blade (Artikel 17), dan sekarang saatnya kita pastikan data yang masuk itu bersih, valid, dan aman.

Tenang, Laravel sudah nyediain sistem validasi yang powerful banget — dan surprisingly, mudah dipelajari. Yuk kita mulai!

📌 Definisi Penting

Validasi Form adalah proses memastikan bahwa data yang dikirimkan pengguna melalui form sesuai dengan aturan yang telah ditentukan — sebelum data tersebut diproses atau disimpan ke database.

🛡️ Kenapa Validasi Form di Laravel Itu Wajib?

Bayangkan kamu punya toko dan ada pelanggan yang mau checkout. Kamu pasti nggak langsung terima pembayaran tanpa ngecek: apakah barang dipilih? Apakah alamat pengiriman diisi? Apakah nomor kartu kredit valid? Nah, validasi form itu persis kayak kasir yang teliti — dia ngecek semua detail sebelum transaksi diproses.

Di dunia web, tanpa validasi, aplikasimu bisa jadi sarang bug, data kotor, bahkan celah keamanan. Laravel menyediakan mekanisme validasi yang terintegrasi langsung di controller maupun via Form Request — dan kita akan bahas keduanya.

🔥
Fakta Menarik

Menurut OWASP (Open Web Application Security Project), input yang tidak divalidasi masuk dalam daftar 10 kerentanan web paling berbahaya di dunia. Validasi bukan opsional — itu wajib!

⚖️ Analisis: Tanpa vs Dengan Validasi
Aspek ❌ Tanpa Validasi ✅ Dengan Validasi
Keamanan Rentan SQL Injection & XSS Data bersih & aman
Integritas Data Data bisa kosong/tidak konsisten Data selalu sesuai format
UX Pengguna Tidak ada feedback jelas Pesan error yang informatif
Debugging Bug sulit dilacak Error tertangkap sejak awal

⚙️ Cara Validasi Form di Laravel: Step by Step

Laravel punya dua cara utama untuk validasi: langsung di Controller menggunakan method $request->validate(), atau menggunakan Form Request (kita bahas detail di Artikel 19). Untuk sekarang, kita fokus ke cara pertama dulu yang paling cepat dipraktikkan.

1

Buat Route & Controller

Pastikan kamu sudah punya route untuk menampilkan form (GET) dan menerima data (POST). Kita pakai contoh form pendaftaran mahasiswa.

 routes/web.php
use App\Http\Controllers\MahasiswaController;

Route::get('/daftar', [MahasiswaController::class, 'create']);
Route::post('/daftar', [MahasiswaController::class, 'store']);
2

Tambahkan Validasi di Controller

Di method store(), tambahkan $request->validate() sebelum proses penyimpanan. Jika validasi gagal, Laravel otomatis redirect ke halaman sebelumnya dengan pesan error.

 app/Http/Controllers/MahasiswaController.php
public function store(Request $request)
{
    // 🛡️ Validasi data masuk
    $validated = $request->validate([
        'nama'      => 'required|string|max:100',
        'email'     => 'required|email|unique:mahasiswas,email',
        'nim'       => 'required|digits:10|unique:mahasiswas,nim',
        'angkatan'  => 'required|integer|min:2000|max:2025',
        'jurusan'   => 'required|in:TI,SI,MI,RPL',
    ]);

    // ✅ Jika lolos validasi, simpan ke database
    Mahasiswa::create($validated);

    return redirect('/daftar')
        ->with('sukses', 'Data mahasiswa berhasil disimpan!');
}
3

Tampilkan Pesan Error di Blade

Laravel secara otomatis mengirim variable $errors ke view. Tampilkan di Blade seperti ini:

 resources/views/daftar.blade.php
<!-- Tampilkan semua error -->
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

<!-- Atau tampilkan per field -->
<input type="text" name="nama" value="{{ old('nama') }}">
@error('nama')
    <span class="text-danger">{{ $message }}</span>
@enderror
💡
Tips Pro

Selalu gunakan old('nama_field') di value input. Ini memastikan data yang sudah diketik tidak hilang saat validasi gagal — sangat penting untuk UX yang baik!

📋 Daftar Aturan Validasi Paling Sering Dipakai

Salah satu kekuatan terbesar validasi form di Laravel adalah koleksi aturannya yang super lengkap. Kamu bisa kombinasikan beberapa aturan sekaligus dengan tanda |. Berikut aturan-aturan yang paling sering kamu butuhkan:

Aturan Fungsi Contoh
requiredField wajib diisi'nama' => 'required'
emailFormat email valid'email' => 'email'
min:n / max:nPanjang/nilai minimum atau maksimum'umur' => 'min:17|max:99'
unique:table,colNilai harus unik di tabel tertentu'email' => 'unique:users'
confirmedHarus sama dengan field _confirmation'password' => 'confirmed'
in:val1,val2Nilai harus salah satu dari daftar'status' => 'in:aktif,nonaktif'
numeric / integerHarus berupa angka'nilai' => 'numeric'
nullableBoleh null/kosong'bio' => 'nullable|string'
Insight Penting

Aturan validasi bisa ditulis sebagai string (dipisah |) atau sebagai array. Untuk aturan yang lebih kompleks atau mengandung koma (seperti Rule::in([...])), selalu gunakan array untuk menghindari konflik parsing.

🌐 Kustomisasi Pesan Error Validasi Laravel

Secara default, pesan error Laravel berbahasa Inggris. Untungnya, kamu bisa dengan mudah menggantinya — bahkan per field. Ini bikin pesan error jauh lebih user-friendly dan relevan konteksnya.

 Custom Validation Messages
$request->validate([
    'email' => 'required|email|unique:users',
    'nim'   => 'required|digits:10',
], [
    // Format: 'field.rule' => 'pesan kustom'
    'email.required' => 'Email wajib diisi, ya!',
    'email.email'    => 'Format email tidak valid.',
    'email.unique'   => 'Email ini sudah terdaftar.',
    'nim.required'   => 'NIM harus diisi.',
    'nim.digits'     => 'NIM harus tepat 10 digit angka.',
]);
⚠️
Perhatian

Jangan pernah mengandalkan validasi hanya di sisi klien (JavaScript). Ini bisa di-bypass dengan mudah. Validasi server-side di Laravel adalah keharusan, bukan pelengkap. Gunakan keduanya untuk pengalaman terbaik.

4

Gunakan Bahasa Indonesia untuk Semua Pesan

Daripada atur per field, kamu bisa ganti seluruh file bahasa validasi Laravel. Install laravel-lang lalu jalankan:

# Install package bahasa
composer require laravel-lang/lang --dev
php artisan lang:add id

# Set locale di config/app.php
'locale' => 'id',
5

Test Validasimu!

Selalu coba submit form dengan data yang sengaja salah — field kosong, email tanpa @, angka di luar range — untuk memastikan setiap aturan bekerja sesuai harapan. Debugging validasi jauh lebih mudah jika dilakukan sejak awal.

💡
Tips Efisiensi

Untuk proyek skala besar, pertimbangkan memindahkan logika validasi ke Form Request (kelas terpisah). Ini membuat controller lebih bersih dan validasi lebih mudah diuji secara independen. Kita akan bahas ini detail di Artikel 19!

📝 Kesimpulan

Validasi Form di Laravel: Simpel, Kuat, dan Wajib Dikuasai

Di artikel ini kita sudah belajar:

  • Kenapa validasi form di Laravel itu esensial untuk keamanan dan integritas data
  • Cara menggunakan $request->validate() langsung di Controller
  • Daftar aturan validasi paling umum dan cara mengombinasikannya
  • Cara menampilkan pesan error di Blade dengan @error dan old()
  • Cara mengkustomisasi pesan error agar lebih ramah pengguna

Ini adalah bagian dari Seri 50 Artikel Belajar Laravel yang dirancang untuk membawa kamu dari nol sampai bisa membangun aplikasi web profesional. Artikel selanjutnya kita akan naik level dengan Form Request — cara validasi yang lebih rapi dan terstruktur.

#Laravel #PHP #FormValidation #WebDevelopment #BelajarLaravel #Tutorial

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux