Pada tutorial kali ini kita akan membahas bagaimana cara membuat validasi form di laravel, validasi ini fungsinya untuk membatasi atau mewajibkan pengguna melakukan input form pada data tertentu yang ingin kita tentukan sehingga tidak ada kesalahan atau kekurangan data yang kita butuhkan.
Didalam sistem yang membutuhkan data inputan dari user tentunya validasi sangat penting diterapkan agar data yang kita inginkan lengkap dan tidak ada kesalahan yang mungkin saja bisa menyebabkan error pada sistem yang kita buat dikarenakan wajib (not null) konfigurasi field atau kolom pada table di database yang sudah kita desain.
Perlu kamu ketahui bahwa tutorial membuat validasi form di laravel ini adalah tutorial lanjutan dari tutorial Membuat Autentikasi Login Di Laravel, sehingga apa bila kamu ingin mengikuti dari awal atau apabila tidak begitu mengerti alur dari tutorial ini silahkan diulangi dari awal seri Tutorial Dasar Laravel.
Cara Melakukan Validasi Form Di Laravel
Di laravel ada 2 cara melakukan validasi form, yang pertama langsung dilakukan di controller, dan yang kedua membuat file dan class baru terpisah dari controller, kita akan mempraktekannya satu-persatu dari keduanya.
Tapi sebelum itu penulis ingin menyampaikan bahwa disini penulis menggunakan UI Bootstrap 4, sehingga disesuaikan saja bagian inti tutorial ini, yaitu bagian validasi yang perlu dipahami.
Pertama buatlah sebuah controller dengan nama ValidationController dengan cara menjalankan perintah dibawah ini.
php artisan make:controller ValidationController
Perintah diatas akan menciptakan file baru di folder app/Http/Controllers, selanjutnya buka file ValidationController dan tambahkan method validation1()
seperti kode dobawah ini.
public function validation1()
{
return view('request.validation1');
}
Code language: PHP (php)
Jika sudah, buat lagi sebuah file dengan nama validation1.blade.php didalam folder resources/views/request, folder request bisa dibuat secara manual. Lalu didalam file validation1.blade.php tambahkan kode dibawah ini.
@extends('layouts.app')
@section('content')
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Validasi Form</div>
<div class="card-body">
<form action="{{ url('request/validation-1') }}" method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" name="nama" id="nama" class="form-control{{ $errors->has('nama') ? ' is-invalid' : '' }}">
@if($errors->has('nama'))
<span class="invalid-feedback">{{ $errors->first('nama') }}</span>
@endif
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" name="email" id="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}">
@if($errors->has('email'))
<span class="invalid-feedback">{{ $errors->first('email') }}</span>
@endif
</div>
<button type="submit" class="btn btn-primary">Kirim Data</button>
</form>
</div>
</div>
</div>
</div>
@endsection
Code language: HTML, XML (xml)
Untuk bagian @extedns('layouts.app')
adalah bagian dari tag html yang berisi css, js, dimana penulis menggunakan bootstrap. Bisa kamu buat sesuai dengan yang kamu inginkan.
Sedikit penjelasan kode diatas, jika di perhatikan ada kode $errors->has()
dan $errors->first()
, berikut ini penejelasannya.
$errors->has('nama_input')
digunakan untuk mengecek apakah ada kesalahan dengan input tersebut.$errors->first('nama_input')
digunakan untuk menampilkan pesan kesalahan dari input tersebut.
Selanjutnya kembali lagi di ValidationController tadi, tambahkan method processValidation1()
dengan kode seperti dibawah ini.
public function processValidation1(Request $request)
{
$request->validate([
'nama' => 'required',
'email' => 'required|email'
]);
echo '<h3>Validasi Berhasil</h3>';
echo 'Nama: ' . $request->nama . '<br>';
echo 'Email: ' . $request->email;
}
Code language: PHP (php)
Sedikit penjelasan mengenai kode $request->validate()
diatas, kode tersebut digunakan untuk melakukan validasi langsung melalui controller, dimana key nama dan email adalah nama input untuk mengindefikasi field input form mana yang akan melakukan validasi.
- required digunakan untuk mewajibkan input harus di isi dan tidak boleh kosong.
- email digunakan untuk memvalidasi bahwa yang di input user adalah alamat email dengan format yang betul.
Nah untuk memahami semua jenis validasi yang tersedia di laravel kamu bisa membacanya di dokumentasi validasi laravel.
Ok lanjut, buka file web.php yang berada di folder routes, lalu tambahkan kode dibawah ini.
Route::get('request/validation-1', [App\Http\Controllers\ValidationController::class, 'validation1']);
Route::post('request/validation-1', [App\Http\Controllers\ValidationController::class, 'processValidation1']);
Code language: PHP (php)
Selanjutnya jalakan projek belajar validasi form di laravel di browser anda, maka akan tampil seperti gambar dibawah ini.
Nah jika kamu klik tombol Kirim Data tanpa memasukan apapun di dalam kolom Nama dan Email maka akan muncul pesan kesalahan seperti pada gambar dibawah ini.
Namun jika kamu mengisi Nama dan Email artinya akan lulus dari validasi input yang kamu masukan jika sesuai, dan akan muncul seperti dibawah ini.
Jika sudah sesuai diatas artinya validasi yang kamu buat berjalan dengan baik, selanjutnya kita akan mempraktekan cara melakukan validasi menggunakan Form Request Validation.
Apa itu Form Request Validation?
Form Request Validation di laravel pada dasarnya sama dengan yang diatas tersebut, perbedannya adalah penempatan proses validasi yang terpisah antara controller dan kelas validasi, sehingga cara ini bisa lebih bersih karena logika validasi terpisah dengan logika yang ada di controller, dan tentunya class validasi yang dipisahkan tersebut bisa digunakan dimodul lain apabila memiliki kriteria form yang sama persis.
Cara membuat Form Request Validation yaitu dengan memanfaatkan perintah di php artisan, jalankan kode dibawah ini.
php artisan make:request ValidationRequest
Dari perintah diatas maka akan tercipta sebuah file ValidationRequest.php yang berada di folder app/Http/Requests, buka file tersebut lalu pada bagian rules()
masukan kode dibawah ini.
return [
'nama' => 'required',
'email' => 'required|email'
];
Code language: PHP (php)
Sehingga menjadi seperti dibawah ini.
public function rules()
{
return [
'nama' => 'required',
'email' => 'required|email'
];
}
Code language: PHP (php)
Selanjutnya masih di file yang sama, pada bagian authorize()
ubah false
menjadi true
.
Kembali ke file ValidationController.php dan tambahkan kode dibawah ini.
use App\Http\Requests\ValidationRequest;
Code language: PHP (php)
Persis dibawah kode ini.
use Illuminate\Http\Request;
Code language: PHP (php)
Lalu pada method processValidation1()
dibawah ini.
public function processValidation1(Request $request)
{
$request->validate([
'nama' => 'required',
'email' => 'required|email'
]);
echo '<h3>Validasi Berhasil</h3>';
echo 'Nama: ' . $request->nama . '<br>';
echo 'Email: ' . $request->email;
}
Code language: PHP (php)
Ubahlah menjadi seperti dibawah ini.
public function processValidation1(ValidationRequest $request)
{
echo '<h3>Validasi Berhasil</h3>';
echo 'Nama: ' . $request->nama . '<br>';
echo 'Email: ' . $request->email;
}
Code language: PHP (php)
Jika sudah, coba kamu klik tombol Kirim Data pada form yang sama tanpa mengisi data input form tersebut, maka yang terjadi adalah akan menampilkan pesan validasi seperti sebelumnya. Dan kode di method processValidation1()
lebih singkat karena validasi dipidahkan menggunakan Form Request Validation.
Demikian tutorial ini semoga bermanfaat.