Задать вопрос
@NEATweb

Yii2 переопределить exception для изменения формата ответа?

Подскажите, как правильно переопределить exception чтобы в итоге ответ был только с "message", на данный момент используется HttpException.
Текущий формат ответа:
{
    "name": "...",
    "message": "...",
    "code": 500,
    "status": 500,
    "type": "..."
}

Какой нужен:
{
    "message": "..."
}
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
gogowq
@gogowq
Ozh domosh acha ozh
Создайте свой класс исключения, например, MyHttpException.php:
<?php

namespace app\components;

use yii\web\HttpException;

class MyHttpException extends HttpException
{
    public function renderJson()
    {
        $response = \Yii::$app->getResponse();
        $response->data = [
            'message' => $this->getMessage(),
        ];
        $response->send();
    }
}

В вашем коде, где вы хотите выбросить исключение с новым форматом ответа, используйте ваш новый класс MyHttpException:

<?php
use app\components\MyHttpException;

try {
    // Код, который может вызвать исключение
    throw new MyHttpException('Ваше сообщение об ошибке', 500);
} catch (MyHttpException $e) {
    $e->renderJson(); // Отправляем ответ в формате {"message": "..."}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽