Site Admin
Site Admin Founder of MeaningArticles
716 Views

Laravel 8 Custom Validation Rules Example

Hello Dev.

In this articles, i can learn you a way to use custom validation rules in laravel 8. we will show laravel eight custom validation rules instance you could easliy create custom validation rules in laravel 8. Validation is a primary requirement of every project, without validation we can not release a success utility or website. because if you have not carried out validation then you definately get wrong information from use input. Laravel offer there are several default validation guidelines like required, max, min, array, unique, digits, in, boolean, before, after and so forth. we are able to easy use those validation guidelines in laravel 8 utility. however in case you require to create your very own custom validation like given value should be in uppercase or lowercase and many others as we require.

Right here, i'm able to easy represent the way to make custom validator rules in laravel 8 software and it is quite simple, so that you have to simply observe bellow step, make certain you may create most effective for laravel 8.

We make instance from scratch. In this example i take number text field and you can just enter even number, in case you enter odd number then to procure validation errors.

So let's start the lesson...


Step 1: Create Custom Validation Rule

In first step, we will create custom validation rules by run following command. Bellow command through you can create Validation rules file and we can write a logic on that file. So let's run bellow command.

php artisan make:rule CheckAgeRule

Next, after successfully run above command, you will found new "rules" folder in app directory. In rules folder you will also found CheckAgeRule.php file. We have to simple write logic there, if you enter even number then return true otherwise don't do anything.

So, you should have file like as bellow:

app/Rules/CheckAgeRule.php

<?php
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class CheckAgeRule implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if ($value < 30) {
            return true;
        }
    }
    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be less than 30.';
    }
}


Step 2: Add Routes

Here, we need to add two routes for create form get method and another for post method. so open your routes/web.php file and add following route.

web.php

use App\Http\Controllers\CustomValidationController;

//Custom Validation
Route::get('/custom-validation', [CustomValidationController::class, 'index'])->name('custom.validation.index');
Route::post('/custom-validation/store', [CustomValidationController::class, 'store'])->name('custom.validation.store');


Step 3: Create CustomValidationController

Here, now we should create new controller as CustomValidationController. So run bellow command and create new controller. bellow controller for create controller.

php artisan make:controller CustomValidationController

Next bellow command you will find new file in this path app/Http/Controllers/CustomValidationController.php.

In this controller will create seven methods by default as bellow methods:

1)index()

2)store()

So, let's copy bellow code and put on CustomValidationController.php file.

CustomValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Rules\CheckAgeRule;

class CustomValidationController extends Controller
{
    public function index()
    {
    	return view('customValidation');
    }

    public function store(Request $request)
    {
    	$request->validate([
            'name' => 'required',
            'age' => [
                'required', 
                new CheckAgeRule()
            ]
        ]);

    	dd("continue...");
    }
}


Step 4: Create View File

Finally at the end of this example, we have to create customValidation.blade.php file, in this file we will create form and display validation error so let's create customValidation.blade.php file and put bellow code:

customValidation.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 8 Custom Validation</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />

 
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-6 offset-3 mt-5">
            <div class="card mt-5">
                <div class="card-header text-center bg-info">
                    <h2 class="text-white"> <strong>Custom Validation</strong></h2>
                </div>
                <div class="card-body">
                    @if (count($errors) > 0)
                        <ul class="alert alert-danger pl-5">
	                        @foreach($errors->all() as $error)
	                           <li>{{ $error }}</li> 
	                        @endforeach
                        </ul>
                    @endif
                    <form action="{{ route('custom.validation.store') }}" method="post">
                        @csrf
                        <div class="form-group">
                            <label>Name</label>
                            <input type="text" name="name" class="form-control">
                        </div>
                        <div class="form-group">
                            <label>Age</label>
                            <input type="text" name="age" class="form-control">
                        </div>
                        <div class="text-center">
                            <button class="btn btn-success"><i class="fa fa-floppy-o" aria-hidden="true"></i> Save </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Now we are ready to run our custom validation rules example so run bellow command for quick run:

php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/custom-validation

I hope it assists you, thanks for visiting my article if you like my article then share it with your friends on the social media platform.

Happy Coding.....