Laravel 8 Custom Validation Rules Example

laravel 8 custom validation rules example

In this example we will show laravel 8 custom validation rules example. Today i explain how to use laravel custom validation. we will discuss on create custom validation rules in laravel 8.

I will simple represent how to make custom validator rules in laravel 8 application. Laravel provides a variety of helpful validation rules like required, max, min, array, unique, digits, in, boolean, before, after etc. However, you may wish to specify some of your own custom validation rules in laravel.

We will provide example of custom validation rules in laravel 8. You may use the make:rule Artisan command. command to you can generate custom validation rules. In laravel your custom validation rules is placed on app/rules directory.

Create your own laravel 8 custom validation rules like given value should be in uppercase or lowercase, check age etc as we require. In this example i take number text field and you can enter less 30, if you enter upto 30 then display validation error.

Read Also :  PayPal Integration in Laravel Example

Example : Laravel 8 custom validation

Step 1: Create Custom Validation Rule

In this step we will create custom validation rules using the following command:

php artisan make:rule CheckAgeRule

After run this command, you will found new “rules” folder in app directory. In rules folder you will also found CheckAgeRule.php file.

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

use App\Http\Controllers\CustomValidationController;


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

php artisan make:controller CustomValidationController
<?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

resources/views/customValidation.blade.php

<html>
<head>
    <title>Laravel 8 Custom Validation Rules Example</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>

I hope you understand of laravel 8 custom validation rules and it can help you…