Добрый вечер!
У меня следующая архитектура проекта. Есть контроллеры которые выдают html страницы и есть контроллеры, которые используются для получения данных в json формате (эти данные потом обрабатываются в VUE).
Мне нужно для всех API контроллеров сделать:
- что бы ответ был в json формате
- что бы в ответе всегда направлялся массив с элементами state, error, data.
В state ставиться "ок" если контроллер отдал нормальный ответ. Если было исключение в контроллере или внутри самого YII, то state = "error".
В error пишутся ошибки.
В data дописывается ответ от контроллера.
Насколько я понимаю эту логику нужно реализовать в базовом классе для всех API контроллеров в behaviors, но пока в голову не приходит как это реализовать.
Поделитесь, кто может, схемой реализацией или просто направьте по правильному пути.
Разные объекты Response для контроллеров
-
- Сообщения: 11
- Зарегистрирован: 2019.06.14, 16:24
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
-
- Сообщения: 11
- Зарегистрирован: 2019.06.14, 16:24
Re: Разные объекты Response для контроллеров
Не понял, что вы хотели сказать этой ссылкой.
Повторюсь. Мне нужно менять формат ответа только для определенных контроллеров. Те, которые отдают html я менять не хочу.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Разные объекты Response для контроллеров
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;
}