Belajar Laravel : Membuat Validasi Form

Ditulisan saya sebelumnya kita sudah berhasil melakukan proses insert, tapi bagaimana jika form kita

tidak di isi suatu value apapun ? Tentu saja akan mengalami error karna didatabase kita mendefinisikan

beberapa column tidak boleh kosong / harus terdapat value. Bagaimana mensiasati agar user harus melengkapi

inputan mereka ? Salah satunya dengan validasi.

Pertama kita akan membuat form request menggunakan `artisan` command, caranya sebagai berikut:

php artisan make:request MahasiswaRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class MahasiswaRequest 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',
			'email' => 'required|email',
			'dob' => 'required|date',
        ];
    }
}

required disini berarti memberi validasi agar inputan tidak boleh kosong. Update controller kita menjadi seperti berikut :

<?php

namespace App\Http\Controllers;

use App\Http\Requests\MahasiswaRequest;
use App\Mahasiswa;
use Illuminate\Http\Request;

class MahasiswaController extends Controller
{
	public function create()
	{
		return view('mahasiswa.create');
	}

	public function store(MahasiswaRequest $request)
	{
		Mahasiswa::create([
			'name' => request('name'),
			'email' => request('email'),
			'dob' => request('dob'),
			'address' => request('addres')
		]);

		return redirect()->back();
	}
}

Kita tambahkan MahasiswaRequest ke dalam function store. Untuk menampilan pesan error dihalaman create kita buat file baru

dengan nama `errors.blade.php` di folder `resources\views\errors’.

@if ($errors->any())
	<div class="alert alert-danger">
		<ul>
			@foreach ($errors->all() as $error)
				<li>{{ $error }}</li>
			@endforeach
		</ul>
	</div>
@endif

Dan terakhir kita akan panggil file errors menggunakan (@include) di file `mahasiswa\create` kita

@extends('layouts.app')

@section('content')
	<div class="container">
		<div class="row justify-content-center">
			<div class="col-md-8">
				@include('errors.errors')
				<div class="card">
					<div class="card-header">Tambah Mahasiswa</div>
					<div class="card-body">
						<form method="POST" action="/mahasiswa">
							@csrf
							<div class="form-group">
								<label>Nama Lengkap</label>
								<input type="text" class="form-control" name="name" value="{{ old('name') }}">
							</div>
							<div class="form-group">
								<label>Email</label>
								<input type="email" class="form-control" name="email" value="{{ old('email') }}">
							</div>
							<div class="form-group">
								<label>Tanggal Lahir</label>
								<input type="date" class="form-control" name="dob" value="{{ old('dob') }}">
							</div>
							<div class="form-group">
								<label>Alamat</label>
								<textarea name="address" class="form-control" cols="30" rows="10">{{ old('addres') }}</textarea>
							</div>
							<div class="form-group">
								<button class="btn btn-primary">Simpan</button>
							</div>
						</form>
					</div>
				</div>
			</div>
		</div>
	</div>
@endsection

Dan tada.. Validasi pada form kita berhasil.