偷懒之 validator 验证器免写 messages 自动中文输出

实现以下结果
偷懒之validator验证器免写messages自动中文输出

validator 转换为中文输出

  1. 把 resources\lang 下 en 的文件夹 复制在同一目录并改名为 zn

  2. 把 zn 中的 validation.php 文件修改为 点我查看 中的内容。

  3. 修改 config 目录下的 app.php 文件

     'locale' => 'en',
     修改为
     'locale' => 'zn',

这个时候还不够会出现以下效果

偷懒之validator验证器免写messages自动中文输出

监听全局错误

在 app/Exceptions/Handler.php 中 render 方法监听 ValidationException 异常

 public function render($request, Throwable $exception)
    {
       if ($exception instanceof ValidationException) { // 验证器验证失败
            $errors =  $this->replace_err_msg($exception->errors());
            return $this->error(BaseMsg::FORM_VALIDATE_FAIL,null, $errors);//这个报错返回了 ,自行实现
        } 

        return parent::render($request, $exception);
    }
    private function replace_err_msg($arr)//替换错误信息
    {
        if (is_array($arr) && !empty($arr)){
            foreach ($arr as $k=>&$v){
                $langKey = 'attribute.'.$k;
                $msg =  __($langKey);
                if ($msg !== $langKey){
                    foreach ($v as &$vv){
                        $vv =  str_replace($k,$msg,$vv);
                    }
                }
            }
        }
      return $arr;
    }

以上方法需要在 resources/lang 相应语言目录下(zn/en)新增文件 attribute.php

<?php
    return [
        'username' => '用户名',
        'password' => '密码',
    ];
?>
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。