首页 > 解决方案 > Laravel,使用自定义字段名称进行验证

问题描述

我正在保存通过验证的数据。验证设置在一个名为 $rules 的数组中:

$rules = array(
        'name_field' => 'required|unique:users',
        'number_in_db' => 'required',
    );
$validator = Validator::make($request->all(), $rules);
if ($validator->passes()) {
    MyModel::create($request->input());

    return redirect()->route('some.route')->withFlashSuccess('Done!');
    } else
    return redirect()->back()->withInput()->withErrors($validator);

工作正常,但是当它重定向到出现错误的视图时,它会向我显示与数组完全相同的字段名称,例如:“name_field 已注册”。如何为每个字段声明自定义名称?例如,有“名称已注册”之类的内容。

标签: laravelvalidation

解决方案


来自 Laravel文档..

  1. 自定义错误消息

您可以使用自定义错误消息而不是默认值进行验证。有几种方法可以指定自定义消息。首先,您可以将自定义消息作为第三个参数传递给 Validator::make 方法:

$messages = [
    'name.required' => 'The "name" field is required!',
    'name.unique'   => 'The "name" field is should be unique!',
];

$validator = Validator::make($input, $rules, $messages);
  1. 在语言文件中指定自定义属性

如果您希望将验证消息的 :attribute 部分替换为自定义属性名称,您可以在 resources/lang/xx/validation.php 语言文件的属性数组中指定自定义名称:

'attributes' => [
    'name_field'   => 'name',
    'number_in_db' => 'number',
],

官方文档中提供了更多选项。但我建议您使用“在语言文件中指定自定义属性”方法。


推荐阅读