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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
49
粉丝
7
喜欢
60
收藏
94
排名:592
访问:1.3 万
私信
所有博文
社区赞助商