In this article i will explain you to show validation error message in laravel. One crucial aspect of web development is handling form validation and displaying error messages to users effectively. In this guide, we will delve into the intricacies of showing validation error messages in Laravel, ensuring a smooth user experience and robust data integrity.
To illustrate how to use flash messages, we will provide an example that can be implemented in any Laravel version, including Laravel 5, 6, 7, 8, 9, and 10.
Laravel stores all messages in session for one request and removes them in the next request.
We will use bootstrap alert to show messages in this example and set any message type, such as error message after redirect.
Steps to Show Validation Error Message in Laravel
Let’s begin the tutorial on how to display flash success and error messages in Laravel
Step 1: Create a laravel project
First step is to create the Laravel 8 project using composer command or you can also read the Simplest Way to Install Laravel 10 and Laravel artisan command to generate controllers, Model, Components and Migrations
composer create-project laravel/laravel crud
Step 2: Create a Flash View File
Now, Create a file to show the flash message in our application
So lets create file and show them as follow
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
//to show success message
@if ($message = Session::get('success'))
<div class="alert alert-success alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
@endif
Step 3: Include flash view in theme layout
Next, Include the above create file resources/views/flash-messages.blade.php
in our application theme as follow
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>How to Show Validation Error Message in Laravel - Readerstacks </title>
<script src="{{asset('js/app.js')}}" crossorigin="anonymous"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">
<h2>How to Show Validation Error Message in Laravel - Readerstacks</h2>
</div>
<div class="panel-body">
@include('flash-message')
@yield('content')
</div>
</div>
</div>
</body>
</html>
This will include the messages view in all pages of application.
Step 4: Show Flash Messages
In this final step we will show the error messages according the message types so you can create a controller a put the follow code
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ArticleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$articles = Article::paginate(2);
return view('articles.list ', ['articles' => $articles]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('articles.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => "required",
'email' => "required|email|unique:articles",
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:4096',
]);
if ($validator->fails()) {
return redirect()->back()->withInput()->withErrors($validator->errors());
}
return redirect()->route("articles.index")
->with('success', 'You have successfully created the article.');
}
}
So here to show messages we used as follow
Show Error message after validation failed
return redirect()->back()->withInput()->withErrors($validator->errors());
Show Success message After Redirect
return redirect()->route("articles.index")
->with('success', 'You have successfully created the article.');