Страница 1 из 1

Разные объекты Response для контроллеров

Добавлено: 2020.03.11, 21:20
YafusOriginal
Добрый вечер!

У меня следующая архитектура проекта. Есть контроллеры которые выдают html страницы и есть контроллеры, которые используются для получения данных в json формате (эти данные потом обрабатываются в VUE).

Мне нужно для всех API контроллеров сделать:
- что бы ответ был в json формате
- что бы в ответе всегда направлялся массив с элементами state, error, data.
В state ставиться "ок" если контроллер отдал нормальный ответ. Если было исключение в контроллере или внутри самого YII, то state = "error".
В error пишутся ошибки.
В data дописывается ответ от контроллера.

Насколько я понимаю эту логику нужно реализовать в базовом классе для всех API контроллеров в behaviors, но пока в голову не приходит как это реализовать.

Поделитесь, кто может, схемой реализацией или просто направьте по правильному пути.

Re: Разные объекты Response для контроллеров

Добавлено: 2020.03.12, 13:17
yiiliveext

Re: Разные объекты Response для контроллеров

Добавлено: 2020.03.12, 20:24
YafusOriginal
Не понял, что вы хотели сказать этой ссылкой.
Повторюсь. Мне нужно менять формат ответа только для определенных контроллеров. Те, которые отдают html я менять не хочу.

Re: Разные объекты Response для контроллеров

Добавлено: 2020.03.12, 21:52
yiiliveext
YafusOriginal писал(а): 2020.03.12, 20:24
Не понял, что вы хотели сказать этой ссылкой.
Повторюсь. Мне нужно менять формат ответа только для определенных контроллеров. Те, которые отдают html я менять не хочу.

Код: Выделить всё

public function behaviors()
    {
        $behaviors = parent::behaviors();

        $behaviors['contentNegotiator'] = [
            'class' => \yii\filters\ContentNegotiator::className(),
            'formats' => [
                'text/html' => \yii\web\Response::FORMAT_HTML,
            ],
        ];

        return $behaviors;
    }