偷懒之 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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!