laravel表单验证中文提示
laravel表单验证中文提示
本文编写时间:2023-03-12
修改时间:2023-03-13,修改内容:添加了对异常处理的代码。
需求
希望 laravel 框架的表单验证的错误提示是中文的,而不是英文的。
我自己当前用 laravel 8.0,不过这个类库支持各种版本的 laravel,包括最新的。
实现:
1,执行 composer 安装
composer require laravel-lang/common
(附带说明:官网地址:laravel-lang.com/ )
不需要带具体的 lang 版本号,让 composer 自动识别你当前的 larave 版本号就可以。
假如遇到报错,两种方案:
先尝试
composer remove laravel-lang/publisher laravel-lang/lang laravel-lang/attributes laravel-lang/http-statuses
如果失败,再尝试先删除 composer.lock 文件,然后继续执行开始的 require。
2、发布语言文件
php artisan lang:add zh_CN
此时你的框架目录下的 resources / lang 下会多出 zh_CN 文件夹。
3、修改配置
config / app.php
'locale' => 'zh_CN', // 把 en 改成 zh_CN
补充:对异常处理的代码
说明:当使用单独的校验类,好像可以不用管这个,但是我有时希望在控制器里直接写类似的语句
$input_arr = $request->validate([
'menu_url' => ['bail', 'required', Rule::unique('menu', 'menu_url')->ignore($menu->id)],
'menu_name' => ['bail', 'required', Rule::unique('menu', 'menu_name')->ignore($menu->id)],
'is_use'=>['bail'],
'menu_parent'=>['bail'],
]);
上面的语句有个问题,就是框架会抛出自己定义的异常,而不是按我要求的返回。
所以需要修改 app / Exceptions / Handler.php
另外需注意我是Laravel 8.0,各个版本的 laravel 好像异常处理不同。
use Illuminate\Validation\ValidationException;
public function register()
{
$this->renderable(function (ValidationException $e, $request) {
// 这里就很随意,自己定义吧。
$json=[
'status'=>400,
'msg' =>$e->validator->errors()->first(),
'data' =>[],
];
return response()->json($json)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
});
}
总结
真香
本作品采用《CC 协议》,转载必须注明作者和本文链接