Membuat Form Validasi Eloquent Laravel

Setiap halaman form pasti memiliki validasi yang mengingatkan pengguna dari kesalahan penginputan data. Sekarang waktunya Anda untuk membuat validasi pada halaman tambah dan edit, karena tutorial sejauh ini belum melakukan validasi. Hal ini saya lakukan agar setiap langkah tutorial mudah dipahami dengan baik.

Daftar isi:

1. Memperbarui skrip blade

Sebelum membuat validasi pada controller ada baiknya untuk melakukan beberapa perubahan skrip ada form. Dibawah ini adalah contoh yang mendasar yang saya kutip dari dokumentasi Laravel.

Contoh dasar

<input type="text" name="name" class="input @error('name') is-danger @enderror">

@error('name')
    <p class="help is-danger">{{ $message }}</p>   
@enderror

Silakan lihat dokumentasi Laravel, lebih lanjut lihat disini https://laravel.com/docs/master/validation#the-at-error-directive

Perbarui create.blade.php dan edit.blade.php

Disinilah Anda untuk melakukan perubahan secara mandiri dengan contoh skrip dibawah ini.

<div class="field">
    <label for="name" class="label">Nama Lengkap</label>
    <div class="control">
        <input type="text" name="name" id="name" class="input @error('name') is-danger @enderror" value="{{ old('name') }}">
    </div>
    @error('name')
        <p class="help is-danger">{{ $message }}</p>   
    @enderror
</div>

Lihat gambar ini sebagi contoh:

gambar 1

Pada contoh diatas pasti sebagian orang terlihat sulit bagaimana memahaminya dengan baik. Tetapi berusahalah itu pasti mudah untuk melakukannya.

2. Membangun validasi form

Cara memberikan validasi tepat pada tahapan ini dengan melakukan beberapa perubahan pada skrip controller. Silakan lakukan perubahan skrip dibawah ini dan sesuaikan.

Fungsi store()

Tentunya skrip dibawah ini diletakan pada baris pertama dalam fungsi store(), silakan lakukan segera:

$request->validate([
    'name' => 'required',
    'email' => 'required|unique:users,email',
    'password' => 'required|min:6|confirmed',
    'password_confirmation' => 'required|min:6'
]);

Fungsi update()

Sama halnya dengan yang satu ini, tetapi memerlukan penyesuaian. Silakan perhatikan perubahan skrip dibawah ini:

$data = [
    'name' => 'required',
    'email' => 'required|unique:users,email,' . $id
];

if (is_null($request->password)) {
    $request->replace($request->except(['password']));
} else {
    $data += [
        'password' => 'required|min:6|confirmed',
        'password_confirmation' => 'required|min:6'
    ];
}

$request->validate($data);

Jadi jika variabel password kosong maka akan masuk ke else dan begitu pula sebaliknya. Jadi jika variabel password ada maka akan menambahkan validasi untuk variabel password.

Penjelasan singkat:

  • required - kalau yang satu ini pasti sudah tahu yaitu mewajibkan untuk mengisi input.
  • unique - yaitu untuk memvalidasi terjadinya nilai yang sama pada satu kolom tabel.
  • min - memberikan minimal panjang nilai yang dimasukan, Anda juga bisa menggunakan max sebagai maksimal panjang nilai.

Catatan: Masing-masing validasi dibatasi dengan garis vertikal (|) atau Anda bisa menggunakan larik (array) sebagai nilai validasinya.

Cek bonus tutorial ini

Bonus tutorial kali ini juga menarik dan cukup keren untuk di uji coba, mari simak penjelasannya.

Buat validasi untuk email

Validasi email yang saya maukan ialah ketika pengguna memasukan data yang tidak berbentuk format email maka akan menampilkan kesalahan format. Silakan untuk menambahkan skrip dibawah ini pada validasi email.

regex:/(.+)@(.+)\.(.+)/i

Lihat gambar berikut cara penerapannya:

gambar 2

Catatan: Sebenarnya cara tersebut tidak perlu dilakukan, karena setiap input dengan type="email" maka secara otomatis akan memberikan validasi. Tetapi suatu saat Anda akan memanfaatkan ini dan tidak ada salahnya untuk dicoba.

Mengubah bahasa validasi

Pasti Anda akan bertanya bagaimana cara mengubah bahasa validasi yang diberikan. Saya sudah pernah membahas ini pada Tutorial Laravel Untuk Pemula pada Konfigurasi Dasar Laravel. Silakan baca juga: Konfigurasi Dasar Laravel