/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
api/components/ApiErrorHandler.php
68 строк
2 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace api\components; use Yii; use yii\web\Response; /** * Обработка ошибок от REST API * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2019 */ class ApiErrorHandler extends \yii\web\ErrorHandler { /** * @inheritdoc */ protected function renderException($exception) { if (Yii::$app->has('response')) { $response = Yii::$app->getResponse(); // reset parameters of response to avoid interference with partially created response data // in case the error occurred while sending the response. $response->isSent = false; $response->stream = null; $response->data = null; $response->content = null; } else { $response = new Response(); } // ошибка в API $response->format = Response::FORMAT_JSON; $response->data = $this->convertExceptionToArray($exception); if (YII_DEBUG) { if (Yii::$app->controller) { $response->data['route'] = Yii::$app->controller->route; } } $response->setStatusCodeByException($exception); $response->send(); } /** * @inheritdoc */ protected function convertExceptionToArray($exception) { $array = parent::convertExceptionToArray($exception); if ($exception instanceof ApiException) { if ($exception->errors) { $array['errors'] = $exception->errors; } if ($exception->type) { $array['type'] = $exception->type; } } if (YII_DEBUG) { $array['stack-trace'] = explode("\n", $exception->getTraceAsString()); } return $array; } }