PHP Laravel Set Custom Validation Error Messages Example


There are a three way to change validation error messages in laravel 5 application. Laravel provide it's own messages, but if we want to change the default laravel app validation error messages.

After this full of example you will learn to set custom validation error messages. So let's follow bellow three method to set custom error validation.

1: Using Language File

2: Directly in Controller Code

3: Using Custom Request

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

<?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.',

],

],

....

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

<?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'));

}

}

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

<?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

<?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....







December 22, 2017 | Category : PHP Laravel
Related Posts