Pada dasarnya semua data yang akan dieksekusi pasti harus memenuhi validasi yang sudah ditentukan. Bagaimana jika data tidak dilakukan validasi? pasti akan terjadi kesalahan pada saat menyimpan atau mengeluarkan suatu data dari basis data. Seharusnya validasi harus dilakukan sebaik mungkin, kalau tidak akan terjadi kebocoran data yang tidak diinginkan. Pada tutorial ini Anda akan membahas validasi saat menginput data pada form.
Daftar isi:
- Menambahkan rute baru
- Membuat controller baru
- Membuat berkas dan skripnya
- Membangun validasi
- Menampilkan pesan validasi
- Bonus
Menambahkan rute baru
Hal pertama kali ialah menenambahkan routing seperti dibawah ini pada berkas web.php
pada direktori routes
. Maka akan menambahkan routing users/create
(GET) dan users
(POST), meskipun menggunakan resource tetapi karena menambahkan fungsi only()
maka hanya dua routing itulah yang akan digunakan.
use App\Http\Controllers\UserController;
Route::resource('users', UserController::class)->only([
'create', 'store'
]);
Membuat controller baru
Saatnya membuat controller baru dengan menjalankan lewat terminal dengan php artisan make:controller UserController
yang akan membuat berkas pada app\Http\Controllers\UserController.php
. Kemudian silakan masukan fungsi create()
dan store()
seperti dibawah ini:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function create()
{
return view('users.create');
}
public function store(Request $request)
{
// nanti isi disini skrip validasinya
}
}
Membuat berkas dan skripnya
Silakan buat berkas pada resources\views\users\create.blade.php
dan kemudian masukan skrip dibawah ini:
<!DOCTYPE html>
<html>
<head>
<title>Simpel form users</title>
</head>
<body>
<form action="{{ route('users.store') }}" method="post">
@csrf
<p>
<label>Nama</label>
<input type="text" name="nama">
</p>
<p>
<label>Username</label>
<input type="text" name="username">
</p>
<p>
<button type="submit">Simpan</button>
</p>
</form>
</body>
</html>
Membangun validasi
Sekarang waktunya membuat validasi yang sederhana seperti skrip dibawah ini, jadi input pada form harus di isi wajib karena menggunakan validasi required
. Hal itu sama saja jika Anda membuat input yang menggunakan atribut required
(<input required />
).
public function store(Request $request)
{
$request->validate([
'nama' => 'required',
'nama_pengguna' => 'required',
]);
}
Menampilkan pesan validasi
Jadi!, setelah menambahkan skrip validasi di controller seperti cara diatas pastinya belum membuahkan hasil. Sebab pesan validasi tidak tampil, maka dari itu silakan untuk menambahkan skrip dibawah ini di bagian bawah tag input
baik nama maupun nama_pengguna. Silakan dibawah hasilnya maka akan menampilkan pesan validasi yang harus terpenuhi.
@error('nama')
<p><small>{{ $message }}</small></p>
@enderror
...
@error('nama_pengguna')
<p><small>{{ $message }}</small></p>
@enderror
Catatan: Jika Anda ingin mengubah bahasa pesan validasi silakan cek tutorial pada kelas ini dengan judul
Konfigurasi Dasar Laravel
.
Bonus
Menambahkan minimal dan maksimal karakter
Anda bisa menambahkan nilai minimal dan maksimal sesuai yang Anda sukai, jadi intinya suatu pengguna saat memasukan data pada form bisa diminimalkan berapa minimal dan maksimal karakter yang wajib diisi.
$request->validate([
'nama' => 'required|min:3|max:191',
'nama_pengguna' => 'required|min:3|max:191',
]);
Catatan: Jika Anda menggunakan metode untai (string) maka harus dipisahkan dengan garis vertikal (
|
).
Agar nama pengguna tidak duplikat
Agar nama pengguna atau username tidak duplikat jika nanti sudah menerapkan di tabel basis data bisa menggunakan unique
yang diteruskan ke nama tabel yaitu users
.
$request->validate([
...
'nama_pengguna' => 'required|unique:users'
]);
Penerapan validasi untuk unique
bisa digunakan dengan syarat setiap nilai pada suatu kolom (field) di tabel hanya bisa dimiliki satu data saja. Jadi contohnya seperti alamat email, nomor hp, slug pada pos, dan lainnya.
Catatan: Contoh diatas bisa dilakukan saat ingin menambahkan data saja, terus bagaimana cara melakukannya jika melakukan pembaruan data? Tentu cara tersebut bisa menggunakan
unique:users,id,123
. id (primary key) dan 123 (id-Nya).
Cara lain menulis validasi
Sekader cara menulis validasi bisa dilakukan dengan contoh ini, akan tetapi untuk menulis dengan cara ini mungkin kelihatan asing. Tetapi tidak ada salahnya untuk dibawah.
public function store()
{
request()->validate([
'nama' => ['required', 'min:3', 'max:191'],
'nama_pengguna' => ['required', 'min:3', 'max:191', 'alpha_dash']
]);
}
Selengkapnya bisa baca dokumentasi Laravel Validasi