全局异常处理中如何获取验证规则里返回的信息
1. 运行环境
1). 当前使用的 Laravel 版本?
laravrl 8.8
文件地址:app/Exceptions/Handler.php
render方法中用$e->getMessage()
获取到的信息并不是在验证规则里的验证信息,就像下图这个,验证规则返回的是账号或密码错误
,这里用$e->getMessage()
获取到的是The given data was invalid
。如何在render
方法中获取获取验证规则返回的信息?
<?php
namespace App\Exceptions;
class Handler extends ExceptionHandler
{
public function render($request,Throwable $e)
{
$msg = [
"title" => $title,
"报错时间" => date("Y-m-d H:i:s"),
"接口地址" => $request->getUri(),
"错误原因" => $e->getMessage(),
"TOKEN" => $request->header("token"),
"参数" => json_encode($request->input()),
];
return parent::render($request,$e);
}
}
根据
ValidationException
的源码可以查到, 存在errors
方法可以获取到验证错误信息,但别的异常类不一定有这个方法,所以需要先判断是不是ValidationException
异常,然后$e->errors()