偷懒之 validator 验证器免写 messages 自动中文输出
实现以下结果
validator转换为中文输出
把 resources\lang 下en 的文件夹 复制在同一目录并改名为 zn
把zn中的 validation.php文件修改为 点我查看 中的内容。
修改config 目录下的app.php 文件
'locale' => 'en', 修改为 'locale' => 'zn',
这个时候还不够会出现以下效果
监听全局错误
在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 协议》,转载必须注明作者和本文链接
推荐文章: