如何在laravel表单验证错误消息中提供自定义字段名称

JOE*_*JOE 15 php forms validation laravel

我在laravel中尝试表单验证.我的表单中有一个名为"Category"的输入文本字段,我将字段名称称为"cat".

我定义了这样的验证规则.

public static $rules=array(
         "name"=>"required|min:3",
          "cat"=>"required"
           );
Run Code Online (Sandbox Code Playgroud)

当验证失败时,我收到这样的错误消息

The name field is required.
The cat field is required.
Run Code Online (Sandbox Code Playgroud)

但我想将其显示为"需要类别字段"而不是"猫".
如何在错误消息中将"cat"更改为"Category"?

uir*_*han 34

您可以为您的字段指定自定义错误消息,如下所示.

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

$validator = Validator::make($input, $rules, $messages);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅laravel文档中的"自定义错误消息"部分.

或者,您可以为您的字段名称保留映射,如下所示.你可以将它们设置为验证器.因此,您可以看到描述性名称而不是实际字段名称.

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

$validator = Validator::make ( Input::all (), $rules );
$validator->setAttributeNames($attributeNames);
Run Code Online (Sandbox Code Playgroud)


小智 12

我正在使用它来处理表单中的动态行添加.这个答案是在管理大型表格的背景下提供的.这个答案适用于Laravel 5

表格要求

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',
    ];
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用Laravel 5,希望这有助于引导您朝着正确的方向前进.我正在努力测试它.关于这种潜力,文件似乎不对?

我在框架(Illuminate\Foundation\Http\FormRequest.php)和(Illuminate\Validation\Validator.php)中挖掘了一些线索.


小智 12

这是一个替代 $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'
            ]);
Run Code Online (Sandbox Code Playgroud)


小智 10

您可以自定义每条消息,还可以更改validation.php(resources / lang / en /)中的属性字段名称。用于在validation.php中设置属性

'attributes' => [
   'name' => 'Name',
   'cat' => 'Category',
   'field_name'=>'your attribute'
],
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。轻松又甜蜜 (2认同)

小智 5

只需要resources/lang/en/validation.php

有一个名为 的空白数组attributes

在此处添加您的属性名称,例如'cat'=>'category'

现在所有验证消息都显示类别而不是猫。