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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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