Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Tutorial Lengkap Form Validation di Laravel 8

5 min read

Tutorial Lengkap Laravel 8 Form Validation

Tutorial Lengkap Form Validation di Laravel 8. Halo teman-teman, kali ini saya mau sharing tentang cara membuat form validation yang bervariasi di Laravel 8.

Jika kamu bosan dengan 1 tipe validasi yang itu-itu saja, maka tutorial ini wajib kamu coba agar bisa berkreasi lagi. Saya akan memberikan 3 contoh form validation Laravel 8 dengan disertai source code.

Selain itu kita juga akan belajar membuat custom error message laravel 8. Sehingga pesan error tersebut dapat disesuaikan dengan apa yang kita inginkan.

Step by step akan saya jelaskan agar kamu bisa mencobanya sekarang juga. Yuk kita mulai saja membuat form validation di Laravel 8.

Let’s go!

Step 1# Install Laravel 8

Untuk bisa menginstall Laravel 8, bisa dengan 2 cara, yaitu:

Cara ke 1: Via Laravel Installer

composer global require laravel/installer 

Kemudian ketik command berikut untuk menginstall Laravel 8:

laravel new blog

Blog adalah nama project yang akan kita buat. Kamu bisa mengubahnya dan menyesuaikan nama project yang ingin dibangun.

Baca Juga: Cara Baru Install Laravel 7

Cara Ke 2: Via Composer Create Project

Cara kedua ini paling mudah dan banyak digunakan. Silahkan ketik command berikut ini:

 composer create-project --prefer-dist laravel/laravel blog

Silahkan ubah kata blog dengan project yang ingin kamu buat.

Step 2# Membuat Route

Silahkan buka file web.php yang ada di dalam folder routes, kemudian tambahkan:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
  
Route::get('user/create', [ HomeController::class, 'create' ]);
Route::post('user/store1', [ HomeController::class, 'store1' ]);
Route::post('user/store2', [ HomeController::class, 'store2' ]);
Route::post('user/store3', [ HomeController::class, 'store3' ]);

Route::get('/', function () {
    return view('welcome');
});

Ya, kita telah menambahkan route user/create dengan method get dan function store1, store2, store3 menggunakan method post.

… dan setiap route tersebut akan kita arahkan ke HomeController.php.

Itu artinya kita perlu membuat HomeController.php.

Langsung saja …

Step 3# Membuat Controller

Untuk membuat controllernya, silahkan ketik command berikut ini:

php artisan make:controller HomeController

Kemudian isi HomeController.php dengan kode di bawah ini:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
// tipe 2 required
use Validator;

class HomeController extends Controller
{
    public function create()
    {
        return view('create_user');
    }

    public function store1(Request $request)
    {
        $request->validate([
            'name'      => 'required',
            'password'  => 'required|min:5',
            'email'     => 'required|email|unique:users'
        ]);

        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }

    public function store2(Request $request)
    {
        $rules = [
            'name'          => 'required',
            'password'      => 'required|min:5',
            'email'         => 'required|email|unique:users'
        ];

        $messages = [
            'name.required'          => 'Nama wajib diisi.',
            'password.required'      => 'Password wajib diisi.',
            'password.min'           => 'Password minimal diisi dengan 5 karakter.',
            'email.required'         => 'Email wajib diisi.',
            'email.email'            => 'Email tidak valid.',
            'email.unique'           => 'Email sudah terdaftar.',
        ];

        $validator = Validator::make($request->all(), $rules, $messages);
        
        if($validator->fails()){
            return redirect()->back()->withErrors($validator)->withInput($request->all());
        }

        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }
}

Penjelasan:

Pada kode di atas, saya membuat 2 function store yang berbeda.

Pertama function store1(Request $request). Function ini nantinya akan mengeksekusi pesan error dengan format bawaan dari Laravel (menggunakan Bahasa Inggris).

Kedua menggunakan function store2(Request $request). Pada function ini kita mengubah format pesan error dengan Bahasa Indonesia dan sesuai apa yang kita inginkan.

… untuk menggunakannya kita perlu menambahkan use Validator sebelum class.

Ketiga, membuat validation di Laravel 8 dengan Request. Untuk menggunakan cara ini, kita perlu mengetik command di bawah ini:

php artisan make:request CreateUserRequest

Kemudian buka file CreateUserRequest.php pada direktori app/Http/Requests dan modifikasi menjadi kode berikut ini:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreateUserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name'          => 'required',
            'password'      => 'required|min:5',
            'email'         => 'required|email|unique:users'
        ];
    }

    public function messages()
    {
        return [
            'name.required'          => 'Nama wajib diisi.',
            'password.required'      => 'Password wajib diisi.',
            'password.min'           => 'Password minimal diisi dengan 5 karakter.',
            'email.required'         => 'Email wajib diisi.',
            'email.email'            => 'Email tidak valid.',
            'email.unique'           => 'Email sudah terdaftar.'
        ];
    }
}

Terakhir, kita buat lagi function store3() di HomeController seperti di bawah ini:

public function store3(CreateUserRequest $request)
    {
        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }

… dan jangan lupa untuk menambahkan use App\Http\Requests\CreateUserRequest

Kode lengkapnya sebagai berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
// tipe 2 required
use Validator;
// tipe 3 required
use App\Http\Requests\CreateUserRequest;

class HomeController extends Controller
{
    public function create()
    {
        return view('create_user');
    }

    public function store1(Request $request)
    {
        $request->validate([
            'name'      => 'required',
            'password'  => 'required|min:5',
            'email'     => 'required|email|unique:users'
        ]);

        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }

    public function store2(Request $request)
    {
        $rules = [
            'name'          => 'required',
            'password'      => 'required|min:5',
            'email'         => 'required|email|unique:users'
        ];

        $messages = [
            'name.required'          => 'Nama wajib diisi.',
            'password.required'      => 'Password wajib diisi.',
            'password.min'           => 'Password minimal diisi dengan 5 karakter.',
            'email.required'         => 'Email wajib diisi.',
            'email.email'            => 'Email tidak valid.',
            'email.unique'           => 'Email sudah terdaftar.',
        ];

        $validator = Validator::make($request->all(), $rules, $messages);
        
        if($validator->fails()){
            return redirect()->back()->withErrors($validator)->withInput($request->all());
        }

        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }

    public function store3(CreateUserRequest $request)
    {
        $user           = new User;
        $user->name     = $request->name;
        $user->password = bcrypt($request->password);
        $user->email    = $request->email;
        $user->save();
      
        return back()->with('success', 'User created successfully.');
    }
}

Sekarang kode pada controllernya sudah lengkap.

Mari kita lanjut …

Step 4# Membuat Halaman View

Sekarang waktunya untuk membuat halaman view.

Silahkan buat file baru bernama create_user.blade.php di direktori resources/views.

Kemudian ketik kode berikut ini:

<!DOCTYPE html>
<html>
<head>
    <title>Tutorial Lengkap Form Validation di Laravel 8  - IlmuCoding.com</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
  
        <h1>Tutorial Lengkap Form Validation di Laravel 8  - IlmuCoding.com</h1>
   
        @if(Session::has('success'))
        <div class="alert alert-success">
            {{ Session::get('success') }}
            @php
                Session::forget('success');
            @endphp
        </div>
        @endif
   
        <form method="POST" action="{{ url('user/store1') }}">
  
            {{ csrf_field() }}
  
            <div class="form-group">
                <label>Name:</label>
                <input type="text" name="name" class="form-control" placeholder="Name">
                @if ($errors->has('name'))
                    <span class="text-danger">{{ $errors->first('name') }}</span>
                @endif
            </div>
   
            <div class="form-group">
                <label>Password:</label>
                <input type="password" name="password" class="form-control" placeholder="Password">
                @if ($errors->has('password'))
                    <span class="text-danger">{{ $errors->first('password') }}</span>
                @endif
            </div>
    
            <div class="form-group">
                <strong>Email:</strong>
                <input type="text" name="email" class="form-control" placeholder="Email">
                @if ($errors->has('email'))
                    <span class="text-danger">{{ $errors->first('email') }}</span>
                @endif
            </div>
   
            <div class="form-group">
                <button class="btn btn-success btn-submit">Simpan</button>
            </div>
        </form>
    </div>
</body>
</html>

Penjelasan:

Perhatikan pada baris ke 24. Kamu bisa mengganti store1 dengan store2 atau store3 untuk menguji coba masing-masing hasil pesan error yang didapatkan dari controller.

Step 5# Testing Laravel 8 Form Validation

Mari kita coba testing hasil praktik aplikasi yang sudah kita buat sebelumnya.

Pertama: Buat Database

Silahkan buat database baru bernama laravel8_form_validation

Kedua: Konfigurasi Environment

Buka file .env dan modifikasi kode berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel8_form_validation
DB_USERNAME=root
DB_PASSWORD=

Catatan:

Konfigurasi di atas biasanya cocok untuk windows dan menggunakan XAMPP atau Laragon. Untuk Web Server lainnya bisa menyesuaikan tentang port, username maupun password.

Ketiga: Migrasi Database

Jalankan command di bawah ini untuk migrate table users ke dalam database laravel8_form_validation.

php artisan migrate

Keempat: Jalankan Aplikasi

Ketik command berikut ini untuk menjalankan aplikasi:

php artisan serve
Laravel 8 Form Validation - php artisan serve

Kemudian coba buka URL http://127.0.0.1:8000/user/create

Untuk tipe 1, hasilnya adalah:

Tutorial lengkap laravel 8 form validation - tipe 1 -  ilmucoding

Untuk tipe 2 dan 3, hasilnya adalah:

Penutup

Alhamdulillah, kita sudah belajar membuat form validation di Laravel 8. Ke depannya Laravel 8 validation ini sangat berguna pada project-project yang akan kita kembangkan.

Ada 3 jenis validasi yang dapat kita gunakan sesuai pembahasan di atas.

Pada akhirnya, pilihan akan jatuh pada tipe yang membuat kita nyaman.

Jika kamu ada pertanyaan silahkan langsung menuju kolom komentar di bawah ya.

… kamu juga bisa belajar lebih banyak tentang laravel di sini:

List Belajar Laravel

Semoga tutorial ini bermanfaat. Aamiin.

Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

2 Replies to “Tutorial Lengkap Form Validation di Laravel 8”

Leave a Reply

Your email address will not be published. Required fields are marked *

Jika terbantu dengan artikel ini, silahkan share, beri komentar dan "klik" 1 kali pada iklan ya.