Laravel Validation Custom Error Messages Example
Today, i will let you know example of laravel validation custom error messages. you'll learn custom error message laravel validator. In this article, we will implement a laravel custom validation message in controller. This article goes in detailed on laravel form validation custom error messages.
Here, i will show you three way to set custom error messages with laravel validation. we will add custom error messages in laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11 app. sometime we need to change default laravel validation error message to his own.
so, let's see bellow three way to change validation error message in laravel 7 application.
Example 1: Using Language File
Example 2: Directly in Controller Code
Example 3: Using Custom Request
Let's see one by one example:
Example 1: Using Language File
In first point, we will set custom messages by directly on laravel set default files. but it will change in your whole project. So here bellow i added controller validation code for my user module like as bellow.
UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$users = User::all();
return view('users.index', compact('users'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|same:confirm_password'
]);
$input = $request->all();
$input['password'] = bcrypt($input['password']);
User::create($input);
return redirect(route('users.index'));
}
}
Now i want to change my validation error message for "name" field, so open "validation.php" file and change like as bellow:
resources/lang/en/validation.php
....
'custom' => [
'name' => [
'required' => 'The :attribute field can not be blank value.',
],
],
....
Example 2: Directly in Controller Code
In the second option, we can directly change from controller method, i think if you want to make it quick then this option will be perfect.
UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$users = User::all();
return view('users.index', compact('users'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|same:confirm_password'
],
[ 'name.required' => 'The :attribute field can not be blank value.']);
$input = $request->all();
$input['password'] = bcrypt($input['password']);
User::create($input);
return redirect(route('users.index'));
}
}
Example 3: Using Custom Request
In Third option, we have to create custom request and then you can use it in your controller, this method is better way of laravel, so can run following command to create user form request.
php artisan make:request UserFormRequest
app/Http/Requests/UserFormRequest.php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserFormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|same:confirm_password'
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'name.required' => 'The :attribute field can not be blank value',
];
}
}
UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\UserFormRequest;
use App\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$users = User::all();
return view('users.index', compact('users'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(UserFormRequest $request)
{
$input = $request->all();
$input['password'] = bcrypt($input['password']);
User::create($input);
return redirect(route('users.index'));
}
}
I hope you found best solution....
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Laravel Unique Validation With Soft Delete Example
- Laravel Unique Validation on Update Example
- How to Use Unique Validation in Laravel?
- Special Characters Not Allowed Validation in Laravel
- Laravel Form Validation Request Class Example
- Space Not Allowed Validation in Laravel Example
- Laravel Mobile/Phone Number Validation Example
- Laravel Validation for Multiple Files in Array Example
- Dynamic Form Validation in VueJs with PHP Laravel 5.6
- Laravel - Generate Captcha code and Validation example using BotDetect package
- Laravel Client Side Validation using Parsley.js Example