Laravel Validation Custom Error Messages Example

By Hardik Savani November 5, 2023 Category : Laravel

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 and laravel 10 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....

Shares