Jun 13, 2024 | Laravel 11 Laravel
Hello Dev,
Let's explore how to incorporate custom validation error messages in a Laravel 11 application.
Laravel 11 offers a request object for implementing form validation. We'll utilize `request->validate()` to specify validation rules and custom messages. To display error messages, we'll utilize the `$errors` variable. I'll guide you through a straightforward example demonstrating how to integrate form validation in a Laravel 11 application.
Steps for Laravel 11 Form Validation with Error Messages:
Step 1: Install Laravel 11Ensure you have Laravel 11 installed. If not, you can install it using Composer.
Step 2: Create a ControllerCraft a controller to handle form submission and validation logic.
Step 3: Create RoutesDefine routes to direct form submissions to the controller.
Step 4: Create a Blade FileDesign a Blade view file containing the form elements.
Once these steps are completed, you'll have a Laravel application with form validation equipped with custom error messages to guide users through the input process effectively.
Step 1: Install Laravel 11If you haven't already, create a new Laravel project:
composer create-project laravel/laravel example-appRead Also: How to Create a Custom Validation Rule in Laravel 11? Step 2: Create Controller
Generate a controller using Artisan CLI:
php artisan make:controller FormController
Edit the newly created FormController.php in the app/Http/Controllers directory to handle form submissions and validation:
app/Http/Controllers/FormController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Illuminate\View\View; use Illuminate\Http\RedirectResponse; class FormController extends Controller { /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function create(): View { return view('createUser'); } /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function store(Request $request): RedirectResponse { $validatedData = $request->validate([ 'name' => 'required', 'password' => 'required|min:5', 'email' => 'required|email|unique:users' ], [ 'name.required' => 'Name field is required.', 'password.required' => 'Password field is required.', 'email.required' => 'Email field is required.', 'email.email' => 'Email field must be email address.' ]); $validatedData['password'] = bcrypt($validatedData['password']); $user = User::create($validatedData); return back()->with('success', 'User created successfully.'); }Step 3: Create Routes
Define routes for displaying the form and handling the form submission in routes/web.php:
routes/web.php<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\FormController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('users/create', [ FormController::class, 'create' ]); Route::post('users/create', [ FormController::class, 'store' ])->name('users.store');Read Also: Laravel 10 Import Export Excel and CSV File Example Tutorial Step 4: Create Blade File
Create a Blade template for the registration form under resources/views/register.blade.php:
resources/views/createUser.blade.php<!DOCTYPE html> <html> <head> <title>Laravel 11 Custom Validation Error Message Example Tutorial -- ItErrorSolution.com</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" /> </head> <body> <div class="container"> <div class="card mt-5"> <h3 class="card-header p-3"><i class="fa fa-star"></i> Laravel 11 Custom Validation Error Message Example Tutorial -- ItErrorSolution.com</h3> <div class="card-body"> @session('success') <div class="alert alert-success" role="alert"> {{ $value }} </div> @endsession <!-- Way 1: Display All Error Messages --> @if ($errors->any()) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form method="POST" action="{{ route('users.store') }}"> {{ csrf_field() }} <div class="mb-3"> <label class="form-label" for="inputName">Name:</label> <input type="text" name="name" id="inputName" class="form-control @error('name') is-invalid @enderror" placeholder="Name"> <!-- Way 2: Display Error Message --> @error('name') <span class="text-danger">{{ $message }}</span> @enderror </div> <div class="mb-3"> <label class="form-label" for="inputPassword">Password:</label> <input type="password" name="password" id="inputPassword" class="form-control @error('password') is-invalid @enderror" placeholder="Password"> <!-- Way 3: Display Error Message --> @if ($errors->has('password')) <span class="text-danger">{{ $errors->first('password') }}</span> @endif </div> <div class="mb-3"> <label class="form-label" for="inputEmail">Email:</label> <input type="text" name="email" id="inputEmail" class="form-control @error('email') is-invalid @enderror" placeholder="Email"> @error('email') <span class="text-danger">{{ $message }}</span> @endif </div> <div class="mb-3"> <button class="btn btn-success btn-submit"><i class="fa fa-save"></i> Submit</button> </div> </form> </div> </div> </div> </body> </html>Step: Run the Application
Now, to run the Laravel application, please type the following command and press enter:
php artisan serve
Now, open your web browser and enter the provided URL to view the output of the application.
View Your Applicationhttp://localhost:8000/users/createOutput:
Thank you for your encouragement! If you have any questions or need further assistance, feel free to ask. I'm here to help!
"Hey there! I'm a full-stack developer and proud owner of ItErrorSolution.com, based right here in India. I love nothing more than sharing handy tips and tricks with my fellow developers through easy-to-follow tutorials. When it comes to coding, I'm all about PHP, Laravel, Angular, Vue, Node, JavaScript, jQuery, CodeIgniter, and Bootstrap – been hooked on them forever! I'm all about putting in the work and staying committed. Ready to join me on this journey to coding?"