<?php
declare(strict_types=1);
namespace App\Exception\Handler;
use Hyperf\Codec\Json;
use Hyperf\ExceptionHandler\ExceptionHandler;
use Hyperf\HttpMessage\Stream\SwooleStream;
use Hyperf\Validation\ValidationException;
use Swow\Psr7\Message\ResponsePlusInterface;
use Throwable;
class ValidationExceptionHandler extends ExceptionHandler
{
public function handle(Throwable $throwable, ResponsePlusInterface $response)
{
$this->stopPropagation();
$body = $throwable->validator->errors()->first();
if (! $response->hasHeader('content-type')) {
$response = $response->addHeader('content-type', 'application/json; charset=utf-8');
}
$format = [
'success' => false,
'code' => 4001,
'message' => $body,
'data' => []
];
return $response->setStatus(200)->setBody(new SwooleStream(Json::encode($format)));
}
public function isValid(Throwable $throwable): bool
{
return $throwable instanceof ValidationException;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步