{"id":66520,"date":"2026-07-24T15:41:12","date_gmt":"2026-07-24T08:41:12","guid":{"rendered":"https:\/\/www.rumahweb.com\/journal\/?p=66520"},"modified":"2026-07-24T15:41:13","modified_gmt":"2026-07-24T08:41:13","slug":"cara-membuat-form-validasi-di-laravel","status":"publish","type":"post","link":"https:\/\/www.rumahweb.com\/journal\/cara-membuat-form-validasi-di-laravel\/","title":{"rendered":"Cara Membuat Form Validasi di Laravel untuk Pemula"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Pernahkah Anda menemukan pengguna mengirimkan form dengan kolom yang kosong, alamat email tidak valid, atau data yang tidak sesuai format? Jika kondisi seperti ini tidak ditangani dengan baik, aplikasi dapat menampilkan <em>error<\/em>, menyimpan data yang tidak valid, bahkan berpotensi menimbulkan masalah keamanan. Oleh karena itu, membuat form validasi di Laravel menjadi salah satu langkah penting dalam pengembangan aplikasi web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Laravel telah menyediakan fitur validasi yang mudah digunakan untuk memastikan setiap data yang dikirim pengguna sesuai dengan aturan yang telah ditentukan. Dengan memanfaatkan fitur ini, proses validasi menjadi lebih sederhana, kode aplikasi lebih rapi, dan risiko kesalahan data dapat diminimalkan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pada artikel ini, Anda akan mempelajari cara membuat form validasi di Laravel untuk pemula, mulai dari konsep dasar, aturan validasi (<em>validation rules<\/em>), cara menampilkan pesan error, hingga contoh implementasi yang dapat langsung diterapkan pada proyek Laravel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apa Itu Form Validasi?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Form validasi adalah mekanisme untuk memverifikasi data yang diinputkan pengguna sebelum disimpan ke database. Proses ini dapat memastikan bahwa data yang akan masuk sesuai dengan aturan atau kriteria yang telah ditentukan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sebagai contoh, ketika pengguna mendaftar di aplikasi, mereka harus memasukkan email yang valid, password dengan panjang tertentu, dan nama yang tidak boleh kosong. Jika data tidak sesuai kriteria ini, sistem akan menolak dan memberikan pesan error kepada pengguna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mengapa form validasi sangat penting?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Penerapan form validasi sangat krusial untuk menjaga integritas data dan memastikan hanya data yang sesuai spesifikasi yang masuk ke database nantinya guna mencegah kerusakan sistem. Selain itu, fitur ini berfungsi sebagai benteng pertahanan pertama keamanan aplikasi dari ancaman seperti <a href=\"https:\/\/www.rumahweb.com\/journal\/sql-injection-adalah\/\" target=\"_blank\" rel=\"noopener\" title=\"SQL injection\">SQL injection<\/a> dan XSS. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dari sisi pengguna, validasi ini akan memberikan feedback instan yang meningkatkan <em>user experience<\/em> sekaligus meminimalkan munculnya bug pada fase production. Implementasi ini juga membantu developer mematuhi standar <em>compliance <\/em>dan regulasi industri terkait pengelolaan serta penyimpanan data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Manfaat Menggunakan Sistem Validasi Bawaan Laravel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Laravel dilengkapi dengan sistem validasi yang sangat powerful dan fleksibel. Dengan menggunakan fitur bawaan ini anda bisa mendapatkan banyak keuntungan daripada harus membuat dari nol. Keuntungan dengan memanfaatkan fitur bawaan ini ada beberapa seperti berikut : <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mudah Digunakan<\/strong>, <em>Syntax<\/em>nya yang sederhana membuat developer bisa membuat validasi tanpa harus memahami logic yang rumit. Cukup gunakan method <em>validate<\/em>() atau <em>Validator<\/em> class, dan selesai.<\/li>\n\n\n\n<li><strong>Fleksibilitas Tinggi<\/strong>, Laravel menyediakan puluhan rule validasi yang sudah jadi, dari basic rules seperti <em>required<\/em> hingga rules kompleks seperti <em>unique<\/em>, <em>regex<\/em>, dan <em>custom<\/em> <em>rules<\/em>.<\/li>\n\n\n\n<li><strong>Error Handling Otomatis<\/strong>, Ketika validasi gagal laravel secara otomatis redirect kembali ke halaman sebelumnya dengan membawa pesan eror. Sebagai developer tidak perlu untuk membuat eror handling secara manual<\/li>\n\n\n\n<li><strong>Integrasi dengan Blade<\/strong>, Laravel Blade templating engine ini dapat memudahkan menampilkan pesan eror di view dengan helper function seperti @error directive.<\/li>\n\n\n\n<li><strong>Performance Optimal<\/strong>, Validasi bawaan laravel ini telah dioptimalkan untuk performa, sehingga dapat meminimalisir aplikasi melambat.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Persiapan Awal Sebelum Membuat Form Validasi di Laravel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sebelum kita mulai membuat form validasi di Laravel, ada beberapa hal yang perlu disiapkan untuk memastikan proses berjalan lancar. Berikut adalah persiapan yang perlu dipastikan:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Memastikan Laravel Sudah Terinstall<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pastikan Anda sudah menginstall Laravel di komputer masing masing. Jika belum, bisa mengikuti panduan berikut: <a href=\"https:\/\/www.rumahweb.com\/journal\/belajar-laravel\/#Cara_install_Laravel_di_localhost\" target=\"_blank\" rel=\"noopener\" title=\"\">Cara install Laravel di Localhost<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Setup Database Connection<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Edit file .env untuk mengatur koneksi database:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=nama_database\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Memahami <strong>Struktur Folder Laravel<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Folder <em>app\/Http\/Controllers\/<\/em>  Digunakan untuk tempat menyimpan Controller, Folder <em>resources\/views\/<\/em> tempat menyimpan tampilan blade yang digunakan untuk tempat membuat tampilan di website, Folder <em>routes\/web.php\/<\/em> digunakan untuk tempat mendefinisikan route atau jalur request logic website, Folder <em>\/app\/models\/<\/em> Digunakan untuk menyimpan Model.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Memahami Konsep HTTP Methods<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Method <strong>GET<\/strong> digunakan untuk menampilkan data\/mengambil data, Method <strong>POST<\/strong> digunakan untuk mengirimkan data ke database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Siapkan Basic Blade Template<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pastikan sudah setup file layout dasar di resources\/views\/layouts\/app.blade.php yang bisa di-extend oleh view lainnya (Jika sudah menyiapkan layout)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cara Membuat Form Validasi di laravel <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sekarang kita masuk ke bagian praktik. Disini kita akan membuat form validasi lengkap. Mari kita buat form untuk register user dengan validasi yang proper.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1. Buat Controller<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jalankan perintah berikut untuk membuat Controller :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan make:controller UserController<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian edit file <em>app\/Http\/Controllers\/UserController.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\User;\nuse Illuminate\\Http\\Request;\n\nclass UserController extends Controller\n{\n    public function showRegisterForm()\n    {\n        return view('register');\n    }\n\n    public function register(Request $request)\n    {\n        \/\/ Validasi data dengan multiple rules\n        $validated = $request-&gt;validate(&#91;\n            'name' =&gt; 'required|string|max:255|min:3',\n            'email' =&gt; 'required|email|unique:users,email|max:255',\n            'password' =&gt; 'required|string|min:8|confirmed',\n            'password_confirmation' =&gt; 'required',\n            'agree_terms' =&gt; 'required|accepted',\n        ], &#91;\n            \/\/ Custom error message\n            'name.required' =&gt; 'Nama harus diisi',\n            'name.min' =&gt; 'Nama minimal 3 karakter',\n            'email.unique' =&gt; 'Email sudah terdaftar, gunakan email lain',\n            'password.min' =&gt; 'Password minimal 8 karakter',\n            'password.confirmed' =&gt; 'Password tidak cocok',\n            'agree_terms.required' =&gt; 'Anda harus setuju dengan syarat dan ketentuan',\n        ]);\n\n        \/\/ Jika validasi sukses, simpan user\n        $user = User::create(&#91;\n            'name' =&gt; $validated&#91;'name'],\n            'email' =&gt; $validated&#91;'email'],\n            'password' =&gt; bcrypt($validated&#91;'password']),\n        ]);\n\n        return redirect()-&gt;route('register')\n                        -&gt;with('success', 'Registrasi berhasil! Silakan login.');\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2. Mendefinisikan Route<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Edit file <em>routes\/web.php<\/em> guna untuk mendefinsikan request dari controller yang sudah dibuat seperti berikut :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use App\\Http\\Controllers\\UserController;\nRoute::get('\/register', &#91;UserController::class, 'showRegisterForm'])\n    -&gt;name('register');\nRoute::post('\/register', &#91;UserController::class, 'register'])\n    -&gt;name('register.store');<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3. Membuat Tampilan Form<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Silahkan bisa buat file di resources\/views dengan nama file register.blade.php, dan isikan code berikut <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n    &lt;title&gt;Validasi Form&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div class=\"container mt-5\"&gt;\n    &lt;div class=\"row justify-content-center\"&gt;\n        &lt;div class=\"col-md-6\"&gt;\n            &lt;h2&gt;Form Registrasi&lt;\/h2&gt;\n\n            @if ($errors-&gt;any())\n                &lt;div class=\"alert alert-danger\"&gt;\n                    &lt;ul&gt;\n                        @foreach ($errors-&gt;all() as $error)\n                            &lt;li&gt;{{ $error }}&lt;\/li&gt;\n                        @endforeach\n                    &lt;\/ul&gt;\n                &lt;\/div&gt;\n            @endif\n\n            &lt;form action=\"{{ route('register') }}\" method=\"POST\"&gt;\n                @csrf\n\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label for=\"name\" class=\"form-label\"&gt;Nama Lengkap&lt;\/label&gt;\n                    &lt;input type=\"text\" \n                           class=\"form-control @error('name') is-invalid @enderror\" \n                           name=\"name\" \n                           id=\"name\" \n                           value=\"{{ old('name') }}\"\n                           required&gt;\n                    @error('name')\n                        &lt;small class=\"text-danger\"&gt;{{ $message }}&lt;\/small&gt;\n                    @enderror\n                &lt;\/div&gt;\n\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label for=\"email\" class=\"form-label\"&gt;Email&lt;\/label&gt;\n                    &lt;input type=\"email\" \n                           class=\"form-control @error('email') is-invalid @enderror\" \n                           name=\"email\" \n                           id=\"email\" \n                           value=\"{{ old('email') }}\"\n                           required&gt;\n                    @error('email')\n                        &lt;small class=\"text-danger\"&gt;{{ $message }}&lt;\/small&gt;\n                    @enderror\n                &lt;\/div&gt;\n\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label for=\"password\" class=\"form-label\"&gt;Password&lt;\/label&gt;\n                    &lt;input type=\"password\" \n                           class=\"form-control @error('password') is-invalid @enderror\" \n                           name=\"password\" \n                           id=\"password\"\n                           required&gt;\n                    @error('password')\n                        &lt;small class=\"text-danger\"&gt;{{ $message }}&lt;\/small&gt;\n                    @enderror\n                &lt;\/div&gt;\n\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label for=\"password_confirmation\" class=\"form-label\"&gt;Konfirmasi Password&lt;\/label&gt;\n                    &lt;input type=\"password\" \n                           class=\"form-control @error('password_confirmation') is-invalid @enderror\" \n                           name=\"password_confirmation\" \n                           id=\"password_confirmation\"\n                           required&gt;\n                &lt;\/div&gt;\n\n                &lt;div class=\"mb-3 form-check\"&gt;\n                    &lt;input type=\"checkbox\" \n                           class=\"form-check-input @error('agree_terms') is-invalid @enderror\" \n                           name=\"agree_terms\" \n                           id=\"agree_terms\"\n                           value=\"1\"&gt;\n                    &lt;label class=\"form-check-label\" for=\"agree_terms\"&gt;\n                        Saya setuju dengan syarat dan ketentuan\n                    &lt;\/label&gt;\n                    @error('agree_terms')\n                        &lt;small class=\"text-danger d-block\"&gt;{{ $message }}&lt;\/small&gt;\n                    @enderror\n                &lt;\/div&gt;\n\n                &lt;button type=\"submit\" class=\"btn btn-primary w-100\"&gt;Daftar&lt;\/button&gt;\n            &lt;\/form&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Penjelasan Validasi Rules yang Digunakan :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>required<\/em>, <em>Field<\/em> tidak boleh kosong<\/li>\n\n\n\n<li><em>string<\/em>, Field harus berupa string\/teks<\/li>\n\n\n\n<li><em>max<\/em>:255, Maksimal 255 karakter<\/li>\n\n\n\n<li><em>min<\/em>:8, Minimal 8 karakter<\/li>\n\n\n\n<li><em>email<\/em>, Format email yang valid<\/li>\n\n\n\n<li><em>unique<\/em>:<em>users<\/em>,email, Email tidak boleh duplikat di tabel <em>users<\/em><\/li>\n\n\n\n<li><em>regex<\/em>:\/<em>regex_pattern<\/em>\/, Validasi menggunakan <em>regular<\/em> <em>expression<\/em><\/li>\n\n\n\n<li><em>confirmed<\/em>, Harus cocok dengan <em>field password_confirmation<\/em><\/li>\n\n\n\n<li>accepted, <em>Checkbox<\/em> harus di <em>check<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4. Melakukan migrate<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Silahkan buka terminal kemudian bisa untuk jalankan perintah berikut <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan migrate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk melakukan migrasi data bawaan dari laravel seperti table user ke database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pengujian<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah seluruh kode berhasil disusun, Kemudian melakukan pengujian untuk memastikan code validasi form berfungsi sebagaimana mestinya. Jalankan server lokal dengan perintah <em>php artisan serve<\/em>, kemudian akses URL tutorial melalui browser.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"350\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-1024x350.png\" alt=\"Pengujian form validasi - membuat form validasi di laravel\" class=\"wp-image-66524\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-1024x350.png 1024w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-300x103.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-768x262.png 768w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-1536x525.png 1536w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-2048x700.png 2048w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-370x126.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-270x92.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-570x195.png 570w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.33.19-740x253.png 740w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dari Pengujian yang saya lakukan saya melakukan kesalahan secara sengaja dengan meemasukan password yang tidak sesuai dengan kolom konfirmasi password, dan tidak melakukan ceklis syarat dan ketentuan, yang mana code yang telah kita buat menandakan telah berhasil dan sukses untuk menangani validasi form.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jika telah berhasil dan sesuai dengan requirment atau ketentuan yang sudah ditentukan data yang diinputkan pasti akan masuk ke database seperti gambar dibawah ini.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"179\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-1024x179.png\" alt=\"Data masuk kedatabase\" class=\"wp-image-66525\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-1024x179.png 1024w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-300x53.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-768x134.png 768w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-1536x269.png 1536w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-2048x359.png 2048w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-370x65.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-270x47.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-570x100.png 570w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-18-at-21.39.46-740x130.png 740w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Kesalahan Umum Saat Membuat Form Validasi di Laravel dan Solusinya<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Seiring dengan meningkatnya kompleksitas sebuah proyek, celah terjadinya eror akan selalu ada, di mana developer senior dengan jam terbang tinggi sekalipun tidak jarang melewatkan detail-detail kecil yang berujung pada masalah besar. Berikut adalah kesalahan umum yang sering ditemui dan cara mengatesinya :<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kesalahan 1. Lupa Menambahkan @csrf Token<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Biasanya form tidak bisa di-submit karena CSRF protection error. yang disebabkan @csrf belum ditambahkan berikut contoh code yang benar dan salah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- SALAH -->\n&lt;form action=\"{{ route('store') }}\" method=\"POST\">\n    &lt;!-- Field di sini -->\n&lt;\/form>\n\n&lt;!-- BENAR -->\n&lt;form action=\"{{ route('store') }}\" method=\"POST\">\n    @csrf\n    &lt;!-- Field di sini -->\n&lt;\/form><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Kesalahan 2. Tidak Preserve Old Input Values<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tidak Preserve Old Input Values bisa diartikan bahwa sistem atau formulir tidak akan menyimpan dan menampilkan kembali data yang sudah diketik atau pilih sebelumnya. Jika pengiriman formulir gagal (karena ada kesalahan atau jaringan terputus), kolom input akan kosong kembali dan Anda harus mengetik ulang dari awal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- SALAH -->\n&lt;input type=\"text\" name=\"email\">\n\n&lt;!-- BENAR -->\n&lt;input type=\"text\" name=\"email\" value=\"{{ old('email') }}\"><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Kesalahan 3. Menggunakan Validated Data Sebelum Validasi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ketika menerima data dari request pengguna, hindari langsung mengambil seluruh data tersebut tanpa diperiksa terlebih dahulu, Pastikan selalu menerapkan aturan validasi yang ketat seperti contoh di bawah ini<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ SALAH\n$validated = $request->all();\n\n\/\/ BENAR\n$validated = $request->validate(&#91;\n    'email' => 'required|email',\n]);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Serta masih ada yang perlu diperhatikan lainnya, saat ini kita jelaskan 3 kesalahan yang biasanya terjadi dalam menerapkan validasi form.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Berikut beberapa pertanyaan seputar membuat form validasi di Laravel.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"font-style:normal;font-weight:700\"><summary>Apakah validasi client-side (JavaScript) masih diperlukan jika sudah ada validasi server?<\/summary>\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Ya, validasi client-side tetap perlu untuk UX yang lebih baik. Client-side validation memberikan feedback instant tanpa harus submit form, sehingga lebih responsive. Namun, server-side validation (seperti yang kita pelajari) adalah wajib karena user bisa bypass client-side validation. Jadi gunakan keduanya: client-side untuk UX, server-side untuk security.<\/p>\n<\/details>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"font-style:normal;font-weight:700\"><summary>Apakah semua error message langsung ditampilkan atau hanya satu per field?<\/summary>\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Secara default, hanya error pertama per field yang ditampilkan. Jika ingin semua error bisa menggunakan code seperti berikut:<br \/><br \/><em>@foreach ($errors->get(&#8217;email&#8217;) as $error)<br \/>{{ $error }}<br \/>@endforeach<\/em><\/p>\n<\/details>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\" style=\"font-style:normal;font-weight:700\"><summary>Bagaimana jika ingin validasi tergantung kondisi tertentu?<\/summary>\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Gunakan sometimes rule atau conditional callback. Contoh:<br \/>$rules = [<br \/>&#8217;email&#8217; => &#8216;required|email&#8217;,<br \/>];<br \/><br \/>\/\/ Conditional: validasi password hanya jika user admin<br \/>if ($request->user()->is_admin) {<br \/>$rules[&#8216;admin_password&#8217;] = &#8216;required|min:12&#8217;;<br \/>}<br \/>$request->validate($rules);<br \/><br \/>Atau menggunakan sometimes:<br \/>$request->validate([<br \/>&#8217;email&#8217; => &#8216;required|email&#8217;,<br \/>&#8216;age&#8217; => &#8216;sometimes|required_if:show_age,1|integer|min:18&#8217;,<br \/>]);<\/p>\n<\/details>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Penutup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Membuat form validasi di Laravel merupakan langkah penting untuk memastikan setiap data yang dikirim pengguna telah sesuai dengan aturan yang ditentukan. Dengan memanfaatkan fitur validasi bawaan Laravel, proses validasi menjadi lebih mudah, kode aplikasi lebih rapi, serta kualitas dan keamanan data dapat terjaga tanpa perlu membuat logika pengecekan dari awal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah aplikasi Laravel yang dikembangkan di localhost selesai dan siap digunakan, Anda dapat melakukan deploy ke layanan <strong><a href=\"https:\/\/www.rumahweb.com\/hosting-murah\/\" target=\"_blank\" rel=\"noopener\" title=\"hosting murah\">Hosting<\/a><\/strong> Rumahweb agar aplikasi dapat diakses secara online. Dengan dukungan PHP, Composer, dan berbagai fitur pendukung pengembangan web, proses menjalankan aplikasi Laravel di hosting menjadi lebih mudah, aman, dan andal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pernahkah Anda menemukan pengguna mengirimkan form dengan kolom yang kosong, alamat email tidak valid, atau data yang tidak sesuai format? Jika kondisi seperti ini tidak ditangani dengan baik, aplikasi dapat menampilkan error, menyimpan data yang tidak valid, bahkan berpotensi menimbulkan masalah keamanan. Oleh karena itu, membuat form validasi di Laravel menjadi salah satu langkah penting [&hellip;]<\/p>\n","protected":false},"author":357,"featured_media":66628,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[725,796,1497],"class_list":["post-66520","post","type-post","status-publish","format-standard","has-post-thumbnail","category-web-programming","tag-form","tag-laravel","tag-tutorial-laravel"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Arief Hidayatullah\"\/>\n\t<meta name=\"google-site-verification\" content=\"wPstUwU5246IbK_1PqwGrc1LoSDnB-9rPbcT8_vSNgQ\" \/>\n\t<meta name=\"keywords\" content=\"form validasi laravel,membuat form validasi laravel,laravel form validasi,form,laravel,tutorial laravel\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.rumahweb.com\/journal\/cara-membuat-form-validasi-di-laravel\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"id_Id\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Rumahweb Journal \u2013 Panduan Website, Hosting, dan Server\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Cara Membuat Form Validasi di Laravel untuk Pemula\" \/>\n\t\t<meta property=\"og:description\" content=\"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.rumahweb.com\/journal\/cara-membuat-form-validasi-di-laravel\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"634\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-24T08:41:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-24T08:41:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RumahwebIndonesia\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@rumahwebtweet\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Cara Membuat Form Validasi di Laravel untuk Pemula\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@rumahwebtweet\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Cara Membuat Form Validasi di Laravel untuk Pemula","description":"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.","canonical_url":"https:\/\/www.rumahweb.com\/journal\/cara-membuat-form-validasi-di-laravel\/","robots":"max-image-preview:large","keywords":"form validasi laravel,membuat form validasi laravel,laravel form validasi,form,laravel,tutorial laravel","webmasterTools":{"google-site-verification":"wPstUwU5246IbK_1PqwGrc1LoSDnB-9rPbcT8_vSNgQ","miscellaneous":""},"schema":null,"og:locale":"id_Id","og:site_name":"Rumahweb Journal \u2013 Panduan Website, Hosting, dan Server","og:type":"article","og:title":"Cara Membuat Form Validasi di Laravel untuk Pemula","og:description":"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.","og:url":"https:\/\/www.rumahweb.com\/journal\/cara-membuat-form-validasi-di-laravel\/","og:image":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp","og:image:secure_url":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp","og:image:width":1200,"og:image:height":634,"article:published_time":"2026-07-24T08:41:12+00:00","article:modified_time":"2026-07-24T08:41:13+00:00","article:publisher":"https:\/\/www.facebook.com\/RumahwebIndonesia\/","twitter:card":"summary_large_image","twitter:site":"@rumahwebtweet","twitter:title":"Cara Membuat Form Validasi di Laravel untuk Pemula","twitter:description":"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.","twitter:creator":"@rumahwebtweet","twitter:image":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2026\/07\/Banner-Cara-Membuat-Form-Validasi-di-Laravel.webp"},"aioseo_meta_data":{"post_id":"66520","title":null,"description":"Pelajari cara membuat form validasi di Laravel untuk pemula, mulai dari validation rules, pesan error, hingga contoh implementasi yang mudah dipahami.","keywords":[{"label":"form validasi laravel","value":"form validasi laravel"},{"label":"membuat form validasi laravel","value":"membuat form validasi laravel"},{"label":"laravel form validasi","value":"laravel form validasi"}],"keyphrases":{"focus":{"keyphrase":"Membuat Form Validasi di laravel","score":87,"analysis":{"keyphraseInTitle":{"score":9,"maxScore":9,"error":0},"keyphraseInDescription":{"score":9,"maxScore":9,"error":0},"keyphraseLength":{"score":6,"maxScore":9,"error":1,"length":5},"keyphraseInURL":{"score":5,"maxScore":5,"error":0},"keyphraseInIntroduction":{"score":9,"maxScore":9,"error":0},"keyphraseInSubHeadings":{"score":3,"maxScore":9,"error":1},"keyphraseInImageAlt":{"score":9,"maxScore":9,"error":0},"keywordDensity":{"type":"best","score":9,"maxScore":9,"error":0}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-07-18 10:33:57","updated":"2026-07-24 08:41:25","seo_analyzer_scan_date":null},"_links":{"self":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/66520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/users\/357"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/comments?post=66520"}],"version-history":[{"count":4,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/66520\/revisions"}],"predecessor-version":[{"id":66631,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/66520\/revisions\/66631"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media\/66628"}],"wp:attachment":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media?parent=66520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/categories?post=66520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/tags?post=66520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}