How to give custom field name in laravel form validation error message

41,926

Solution 1

You can specify custom error message for your field as follows.

$messages = array(
    'cat.required' => 'The category field is required.',
);

$validator = Validator::make($input, $rules, $messages);

Please see Custom Error Messages section in laravel documentation for more information.

Or you can keep a mapping for your field names like below. And you can set those into you validator. So you can see descriptive name instead of real field name.

$attributeNames = array(
   'name' => 'Name',
   'cat' => 'Category',     
);

$validator = Validator::make ( Input::all (), $rules );
$validator->setAttributeNames($attributeNames);

Solution 2

you can customize every message ,also change the attribute fields name in validation.php (resources/lang/en/). for set the attribute in validation.php

'attributes' => [
   'name' => 'Name',
   'cat' => 'Category',
   'field_name'=>'your attribute'
],

Solution 3

I'm using this to deal with dynamic row addition in forms. This answer is provided in context of managing larger forms. This answer is for Laravel 5

Form request

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Response;

class SomeThingFormRequest extends Request {

public function authorize()
{
 //be nice
}

public function rules()
{
//my loop building an array of rules ex: $rules['thing.attribute.'.$x]
}

public function attributes()
{
    return [
        'thing.attribute'.$x => 'Nice Name',
    ];
}

Hope this help steer you in the right direction if you are using Laravel 5. I'm currently working on testing it out. The documentation seems to be amiss regarding this potential?

I did some digging in the framework (Illuminate\Foundation\Http\FormRequest.php) and (Illuminate\Validation\Validator.php) for the clues.

Solution 4

Here is an Alternative $this->validate(request(), [rules], [custom messages], [Custom attribute name]);

            $this->validate(request(), [
                'fname' => "required|alpha_dash|max:20",
                'lname' => "required|alpha_dash|max:30",
                'extensionName' => "required|alpha_dash|max:20",
                'specialization' => "max:100",
                'subSpecialization' => "max:100"
            ], [], 
            [
                'fname' => 'First Name',
                'lname' => 'Last Name',
                'extensionName' => 'Extension Name',
                'specialization'=> 'Specialization',
                'subSpecialization'=> 'Sub Specialization'
            ]);

Solution 5

Simply got to resources/lang/en/validation.php

There is a blank array named attributes.

add your attribute name here like 'cat'=>'category'

now all validation messages show category instead of cat.

Share:
41,926

Related videos on Youtube

JOE
Author by

JOE

I do like develop applications. Developing is a learning process it make me think, make me updated.

Updated on July 31, 2022

Comments

  • JOE
    JOE almost 2 years

    I was trying form validation in laravel. I have a input text field in my form called 'Category' and i'm given the field name as 'cat' as short.

    And i defined the validation rules like this.

    public static $rules=array(
             "name"=>"required|min:3",
              "cat"=>"required"
               );
    

    When the validation fails i'm getting error message like this

    The name field is required.
    The cat field is required.
    

    But i want to display it as "The category field is required" instead of 'cat'.
    How can i change 'cat' to 'Category' in error message ?.

  • JOE
    JOE almost 10 years
    Ok thats helpful. But i need to specify separate message for required, min, max etc right?. Thats time consuming for large forms. Is there any method you know to change it in single line for all type of errors?.
  • uiroshan
    uiroshan almost 10 years
    you just want to map cat into category field. is it? So default message will show with the 'categroy' text.
  • Amarjit Singh
    Amarjit Singh almost 5 years
    How to do this in Request class file
  • Sw0ut
    Sw0ut over 3 years
    This should be the accepted answer. Easy and sweet
  • Altin
    Altin almost 3 years
    this is the kind of solution I've been dreaming for :D thanks!