Laravel Validation Custom Error Messages Tutorial

Apr 13, 2021 . Admin

Hi Guys,

Today, I will learn you how to use validation custom error messages in laravel. we will show explain of laravel validation custom error messages. I will explain step by step laravel validation custom error messages.we will implement a laravel custom validation message in controller. This article goes in detailed on laravel form validation custom error messages.

I will show you three way to set custom error messages with laravel validation. we will add custom error messages in laravel app. sometime I need to change default laravel validation error message to his own.

Example 1: Directly in Controller Code

In this example, we can directly change from controller method, i think if you want to make it quick then this option will be perfect.

StudentController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Student;

class StudentController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $students = Student::all();
        return view('students.index', compact('students'));
    }


    /**
     * 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:students,email',
            'password' => 'required|same:confirm_password'
            ],
            [ 'name.required' => 'The :attribute field can not be blank value.']);


        $input = $request->all();
        $input['password'] = bcrypt($input['password']);

        Student::create($input);

        return redirect(route('students.index'));
    }
}
Example 2: Using Custom Request

In this example,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 student form request.

	php artisan make:request StudentFormRequest
app/Http/Requests/StudentFormRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;

class StudentFormRequest extends FormRequest
{
    /**
     * Determine if the student 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:students,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',
        ];
    }
}
StudentController.php
all();
        $input['password'] = bcrypt($input['password']);

        Student::create($input);

        return redirect(route('students.index'));
    }
}
Example 3: Using Language File

In this example, 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 student module like as bellow.

StudentController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Student;

class StudentController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $students = Student::all();
        return view('students.index', compact('students'));
    }

    /**
     * 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:students,email',
            'password' => 'required|same:confirm_password'
            ]);

        $input = $request->all();
        $input['password'] = bcrypt($input['password']);

        Student::create($input);

        return redirect(route('students.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.',
        ],
    ],
....
It will help you...
#Laravel 8 #Laravel