Laravel的Validator验证未通过时,错误信息中的 `:attribute` 如何替换为中文?

UioSun
  • 584

目前我是在 lang 文件夹里,定义了 验证器 语言文件的中文版本,但其中还存在像是 :attribute 这种字段。

所以最后的错误提示就变成了:

错误提示:name 不能为空。

:attribute 这种字段如何变成中文呢?

PS: 我不想针对性的自定义错误信息,这个应用有一百多个错误验证,我怕最后我会写疯掉。

回复
阅读 3.5k
3 个回答

1、(推荐,我平常就这么用)如果你是用FormRequest的话,可以重写如下的方法:

public function attributes()
{
    return [
        // 类似 'username' => '用户名'
        'username' => trans('label_fields.username'),
    ];
}

2、(我未测试过,为了回答扒文档临时看到的)如果是在controller中的validator,则可以这样为input属性名定义一个“漂亮的名字”:

$niceNames = array(
    'username' => '用户名'
    // 或单独将它定义,例如在lang下
    // 'username' => trans('label_fields.username'),
);

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

希望能帮到你,兄弟,如有错误请指出。

可以直接在validation.php这个文件中写的.比如:

return [
    'required'             => ':attribute 不能为空。',
    
    'attributes' => [
        'username' => '用户名',
    ]
];

通过这种方式就可以将:attribute替换成相应的中文了;

1cool
  • 2
新手上路,请多包涵
很简单啊,validate,第一个参数验证数据,第二个参数验证规则,第三个参数自定义显示错误,第四个参数,自定义字段名称(就是你的答案)
$this->validate($request, [
                    'info' => 'required',
                    'data' => 'required',
                ], [],
                    [
                        'info' => '输入信息',
                        'data' => '数据',
                    ]
                );
                
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏