Обработка исключений и вывод в JSON

98
13 ноября 2019, 01:00

У меня есть API в котором нужно возвращать ошибки клиенту с помощью исключений. Например, клиент запросил несуществующий документ и приложение выбросило исключение:

public function actionGet($docId)
{
    return (array) $this->findModel($docId);
}
protected function findModel($id)
{
    if (($model = Doc::findOne($id)) !== null) {
        return $model;
    }
    throw new NotFoundHttpException("Документ {$id} не найден");
}

В таком случаи, yii должен вернуть ответ следующего вида:

{
    "success": false, // Успен/Не успех
    "message": "Документ 10 не найден", //Текст из исключения
}

Вместо этого yii возвращает свой дефолтный вывод который меня не устраивает

{
    "name":"Not Found",
    "message":"Документ 10 не найден",
    "code":0,
    "status":404
}

Проблема в том, что я не могу найти способ как кастомизировать вывод исключений. Пытался использовать errorHandler, он даже не срабатывает. Как я понял - errorHandler не работает если Yii::$app->response->format установлен в yii\web\Response::FORMAT_JSON;.

Возможно вы спросите, зачем это нужно? Это просто удобно и уменьшает количество кода.

READ ALSO
Как поменять кодировку в php коде?

Как поменять кодировку в php коде?

Есть файл с кодом который вызывает rss для показа на сайтеНо кодировка rss

92
Кнопка нравится с использованием cookie

Кнопка нравится с использованием cookie

Есть код кнопки нравитсяНа данный момент один пользователь может нажимать на кнопку любое количество раз

85
Оптимизировать цикл парсинга

Оптимизировать цикл парсинга

Есть некоторый цикл (представлен частично от основного кода, но суть передает):

100
Не сохраняет предыдущий submit

Не сохраняет предыдущий submit

когда я нажимаю на submit появляется форма, но когда я нажимаю на следующий, то прошлый забывается

97