Laravel 11 Custom Validation Rules and Error Messages Example

Laravel 11 custom validation rules and error messages; Through this tutorial, i am going to show you how to add custom validation rules and show custom validation error messages in Laravel 11 apps.

Laravel 11 Custom Validation Rules and Error Messages Example

Use the below given steps to add custom validation and show custom validation error in Laravel 11 apps:

  • Step 1 – Install Laravel 11 App
  • Step 2 – Connecting App to Database
  • Step 3 – Run Migration Command
  • Step 4 – Add Routes
  • Step 5 – Generate Controller By Command
  • Step 6 – Create the blade view
  • Step 7 – Run Development Server

Step 1 – Install Laravel 11 App

Run the following command on command prompt to install or download Laravel 11 apps:

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

Step 2 – Configure App to Database

To add database credentials in the .env file:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=here your database name here
DB_USERNAME=here database username here
DB_PASSWORD=here database password here

Step 3 – Run Migration Command

Run the following command on command prompt to create tables into database:

php artisan migrate

This command will create some tables into your database.

Step 4 – Add Routes

Visit routes/web.php and update the following routes into your routes/web.php file:

use App\Http\Controllers\CustomErrorController;
Route::get('form', [CustomErrorController::class, 'index']);
Route::get('store', [CustomErrorController::class, 'store']);

Step 5 – Generate Controller By Command

Run the following command on command prompt to create custom error message controller in laravel app:

php artisan make:controller CustomErrorController

Visit to app/Http/Controllers/CustomErrorController.php and update the following code into your controller file:

<?php

namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\User;
  
class CustomErrorController extends Controller
{
    public function create()
    {
        return view('form');
    }
  
    public function store(Request $request)
    {
        $request->validate(
            [
                'name' => 'required',
                'password' => 'required|min:5',
                'email' => 'required|email|unique:users'
            ], 
            [
                'name.required' => 'Name is required',
                'password.required' => 'Password is required'
            ]
          );
   
        $input = $request->all();
        $input['password'] = bcrypt($input['password']);
        $user = User::create($input);
    
        return back()->with('success', 'User created successfully.');
    }
}

Step 6 – Create Blade View

Visit to resources/views folder and create one blade view file name from.blade.php and update the following code into your file:

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 11 Custom Validation Error Message Example Tutorial -Laratutorials.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 rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
  
        <h1>Laravel 11 Custom Validation Error Message Example</h1>
   
        @if(Session::has('success'))
        <div class="alert alert-success">
            {{ Session::get('success') }}
            @php
                Session::forget('success');
            @endphp
        </div>
        @endif
   
        <form method="POST" action="{{ route('store') }}">
  
            @csrf
  
            <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">Submit</button>
            </div>
        </form>
    </div>
</body>
</html>

Step 7: Run Development Server

Run the PHP artisan serve command on command prompt to start server locally:

php artisan serve

If you want to run the project diffrent port so use this below command

php artisan serve --port=8080

Then open your browser and hit the following url on it:

http://localhost:8000/form

Recommended Laravel Tutorials

Leave a Comment