Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #18 : Form Validasi Laravel

Maaf, saya ulangi, sepertinya ada kesalahan pada permintaan sebelumnya. Berikut adalah artikel tentang Tutorial Laravel #18 : Form Validasi Laravel:

 

 

Dalam pengembangan web menggunakan Laravel, validasi data dari form adalah langkah krusial untuk memastikan data yang masuk ke aplikasi kita sesuai dengan yang diharapkan. Laravel menyediakan fitur validasi yang kuat dan mudah digunakan. Pada tutorial kali ini, kita akan membahas secara mendalam tentang form validasi di Laravel.


 

Apa Itu Validasi Form?

 

Validasi form adalah proses memverifikasi data yang dikirimkan melalui form sebelum data tersebut diproses lebih lanjut (misalnya, disimpan ke database). Tujuannya adalah untuk mencegah data yang tidak valid, tidak lengkap, atau berbahaya masuk ke dalam sistem kita.

 

Cara Kerja Validasi di Laravel

 

Laravel menyediakan beberapa cara untuk melakukan validasi, namun yang paling umum adalah menggunakan Request Validation. Berikut adalah alur kerjanya:

  1. Membuat Request Class (Opsional): Anda bisa membuat class request khusus untuk validasi yang lebih terstruktur.
  2. Mendefinisikan Aturan Validasi: Di dalam controller atau request class, Anda mendefinisikan aturan-aturan validasi untuk setiap field form.
  3. Laravel Melakukan Validasi: Ketika form disubmit, Laravel secara otomatis menjalankan aturan validasi yang telah Anda definisikan.
  4. Menangani Hasil Validasi:
    • Berhasil: Jika semua aturan validasi terpenuhi, request akan diteruskan ke action controller yang dituju.
    • Gagal: Jika ada aturan yang tidak terpenuhi, Laravel akan secara otomatis melakukan redirect kembali ke halaman form sebelumnya dan menyertakan pesan-pesan error.

 

Contoh Sederhana Validasi di Controller

 

Mari kita buat contoh sederhana validasi pada sebuah form pendaftaran user. Anggaplah kita memiliki route dan view seperti berikut:

routes/web.php:

“`php

Route::get(‘/register’, ‘AuthController@showRegistrationForm’);

Route::post(‘/register’, ‘AuthController@register’);

“`

resources/views/register.blade.php:

“`blade

<form method=”POST” action=”/register”>

@csrf

<div>

<label for=”name”>Nama:</label>

<input type=”text” id=”name” name=”name”>

@error(‘name’)

<div class=”alert alert-danger”>{{ $message }}</div>

@enderror

</div>

<div>

<label for=”email”>Email:</label>

<input type=”email” id=”email” name=”email”>

@error(’email’)

<div class=”alert alert-danger”>{{ $message }}</div>

@enderror

</div>

<div>

<label for=”password”>Password:</label>

<input type=”password” id=”password” name=”password”>

@error(‘password’)

<div class=”alert alert-danger”>{{ $message }}</div>

@enderror

</div>

<button type=”submit”>Daftar</button>

</form>

“`

Sekarang, mari kita tambahkan logika validasi di dalam controller AuthController:

app/Http/Controllers/AuthController.php:

“`php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AuthController extends Controller

{

public function showRegistrationForm()

{

return view(‘register’);

}

public function register(Request $request)

{

// Aturan Validasi

$rules = [

‘name’ => ‘required|string|max:255′,

’email’ => ‘required|string|email|max:255|unique:users’,

‘password’ => ‘required|string|min:8|confirmed’,

];

// Pesan Error Kustom (Opsional)
$messages = [
    'name.required' => 'Nama wajib diisi.',
    'email.required' => 'Email wajib diisi.',
    'email.email' => 'Format email tidak valid.',
    'email.unique' => 'Email ini sudah terdaftar.',
    'password.required' => 'Password wajib diisi.',
    'password.min' => 'Password minimal terdiri dari 8 karakter.',
    'password.confirmed' => 'Konfirmasi password tidak sesuai.',
];

// Melakukan Validasi
$request->validate($rules, $messages);

// Jika validasi berhasil, lanjutkan proses pendaftaran
// Contoh: menyimpan user ke database
// \App\Models\User::create([
//     'name' => $request->name,
//     'email' => $request->email,
//     'password' => bcrypt($request->password),
// ]);

return redirect('/')->with('success', 'Pendaftaran berhasil!');

}

}

“`

Penjelasan:

  • Di dalam method register, kita mendefinisikan sebuah array $rules yang berisi aturan validasi untuk setiap field form (name, email, password).
    • required: Field wajib diisi.
    • string: Field harus berupa string.
    • max:255: Panjang maksimal 255 karakter.
    • email: Field harus berupa format email yang valid.
    • unique:users: Field harus unik di dalam tabel users (biasanya untuk email).
    • min:8: Panjang minimal 8 karakter.
    • confirmed: Harus memiliki field dengan nama yang sama ditambah _confirmation (dalam kasus ini, password_confirmation) dan nilainya harus sama.
  • Array $messages berisi pesan error kustom yang akan ditampilkan jika validasi gagal. Jika tidak didefinisikan, Laravel akan menggunakan pesan error default.
  • Method $request->validate($rules, $messages) akan menjalankan proses validasi. Jika validasi gagal, sebuah exception akan dilempar dan Laravel secara otomatis akan melakukan redirect kembali ke halaman form dengan pesan-pesan error.
  • Jika validasi berhasil, kode di bawah $request->validate() akan dieksekusi (dalam contoh ini, hanya komentar).
  • @error('nama_field') pada view Blade digunakan untuk menampilkan pesan error spesifik untuk field tersebut.

 

Membuat Request Class

 

Untuk validasi yang lebih kompleks dan terorganisir, Anda bisa menggunakan Request Class. Untuk membuatnya, gunakan Artisan CLI:

“`bash

php artisan make:request StoreUserRequest

“`

Ini akan membuat file app/Http/Requests/StoreUserRequest.php. Di dalam file ini, Anda perlu mendefinisikan aturan validasi pada method rules() dan mengatur otorisasi pada method authorize() (biasanya diatur ke true).

app/Http/Requests/StoreUserRequest.php:

“`php

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreUserRequest extends FormRequest

{

/**

* Determine if the user is authorized to make this request.

*

* @return bool

*/

public function authorize()

{

return true;

}

/**

* Get the validation rules that apply to the request.

*

* @return array

*/

public function rules()

{

return [

‘name’ => ‘required|string|max:255′,

’email’ => ‘required|string|email|max:255|unique:users’,

‘password’ => ‘required|string|min:8|confirmed’,

];

}

/**

* Get the error messages for the defined validation rules.

*

* @return array

*/

public function messages()

{

return [

‘name.required’ => ‘Nama wajib diisi.’,

’email.required’ => ‘Email wajib diisi.’,

’email.email’ => ‘Format email tidak valid.’,

’email.unique’ => ‘Email ini sudah terdaftar.’,

‘password.required’ => ‘Password wajib diisi.’,

‘password.min’ => ‘Password minimal terdiri dari 8 karakter.’,

‘password.confirmed’ => ‘Konfirmasi password tidak sesuai.’,

];

}

}

“`

Kemudian, di dalam controller, Anda cukup type-hint request class ini:

app/Http/Controllers/AuthController.php:

“`php

<?php

namespace App\Http\Controllers;

use App\Http\Requests\StoreUserRequest;

use Illuminate\Http\Request;

class AuthController extends Controller

{

public function showRegistrationForm()

{

return view(‘register’);

}

public function register(StoreUserRequest $request)

{

// Validasi sudah ditangani oleh StoreUserRequest

// Lanjutkan proses pendaftaran

// \App\Models\User::create([

// ‘name’ => $request->name,

// ’email’ => $request->email,

// ‘password’ => bcrypt($request->password),

// ]);

return redirect('/')->with('success', 'Pendaftaran berhasil!');

}

}

“`

Dengan menggunakan Request Class, kode controller Anda menjadi lebih bersih dan fokus pada logika bisnis, sementara aturan validasi terpusat di satu tempat.


 

Aturan Validasi yang Umum Digunakan

 

Laravel menyediakan berbagai macam aturan validasi. Berikut beberapa yang sering digunakan:

  • required: Wajib diisi.
  • string: Harus berupa string.
  • integer: Harus berupa integer.
  • numeric: Harus berupa angka.
  • email: Harus berupa format email yang valid.
  • url: Harus berupa format URL yang valid.
  • min:value: Minimal value karakter/angka.
  • max:value: Maksimal value karakter/angka.
  • between:min,max: Berada di antara nilai min dan max.
  • confirmed: Harus memiliki field nama_field_confirmation yang sama nilainya.
  • unique:table,column,except,idColumn: Harus unik di dalam tabel database.
  • exists:table,column: Harus ada di dalam tabel database.
  • date: Harus berupa format tanggal yang valid.
  • boolean: Harus berupa nilai boolean (true/false, 0/1, “true”/”false”, dll.).
  • array: Harus berupa array.
  • file: Harus berupa file yang diupload.
  • image: Harus berupa file gambar.
  • Dan masih banyak lagi! Anda dapat melihat daftar lengkapnya di dokumentasi resmi Laravel.

 

Validasi Bersyarat

 

Terkadang, Anda mungkin perlu menerapkan aturan validasi hanya pada kondisi tertentu. Laravel menyediakan method sometimes() untuk hal ini.

“`php

$request->validate([

‘name’ => ‘required|string|max:255′,

’email’ => ‘required|string|email|max:255|unique:users’,

‘age’ => ‘nullable|integer|min:18’, // Umur boleh kosong atau minimal 18

‘occupation’ => ‘required_if:age,>=,18’, // Profesi wajib diisi jika umur >= 18

]);

“`

Pada contoh di atas, field occupation hanya akan divalidasi required jika nilai dari field age lebih besar atau sama dengan 18.


 

Custom Validation Rules

 

Anda juga dapat membuat aturan validasi kustom sendiri menggunakan Artisan CLI:

“`bash

php artisan make:rule Uppercase

“`

Ini akan membuat file app/Rules/Uppercase.php. Di dalam file ini, Anda perlu mengimplementasikan method passes($attribute, $value) yang mengembalikan true jika validasi berhasil dan false jika gagal, serta method message() yang mengembalikan pesan error kustom.

Setelah membuat rule kustom, Anda dapat menggunakannya di dalam aturan validasi Anda:

“`php

$request->validate([

‘name’ => [‘required’, new Uppercase],

]);

“`


 

Kesimpulan

 

Form validasi adalah bagian penting dalam pengembangan aplikasi web Laravel. Dengan fitur validasi yang disediakan oleh Laravel, Anda dapat dengan mudah mengamankan aplikasi Anda dari data yang tidak valid dan memberikan feedback yang jelas kepada pengguna melalui pesan-pesan error. Memanfaatkan Request Class untuk validasi yang lebih terstruktur sangat direkomendasikan untuk proyek yang lebih besar. Pada tutorial selanjutnya, kita akan membahas topik menarik lainnya dalam pengembangan Laravel. Tetap ikuti seri tutorial ini!


Apakah ada aspek spesifik lain tentang validasi form di Laravel yang ingin Anda ketahui lebih lanjut? Misalnya, validasi AJAX, validasi array, atau kustomisasi tampilan pesan error? Beri tahu saya jika Anda memiliki pertanyaan!

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek