Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Тело ответа в yii 2

Тело ответа

Большинство ответов должны иметь тело, содержащее то, что вы хотите показать пользователям.

Если у вас уже имеется отформатированная строка для тела, вы можете присвоить её свойству [[yii\web\Response::content]] объекта запроса:

Yii::$app->response->content = 'hello world!';


Если ваши данные перед отправкой конечным пользователям нужно привести к определённому формату, вам следует установить значения двух свойств: [[yii\web\Response::format|format]] и [[yii\web\Response::data|data]]. Свойство [[yii\web\Response::format|format]] определяет, в каком формате следует возвращать данные из [[yii\web\Response::data|data]]. Например:

$response = Yii::$app->response;
$response->format = \yii\web\Response::FORMAT_JSON;
$response->data = ['message' => 'hello world'];

Yii из коробки имеет поддержку следующих форматов, каждый из которых реализован классом [[yii\web\ResponseFormatterInterface|форматтера]]. Вы можете настроить эти форматтеры или добавить новые через свойство [[yii\web\Response::formatters]].

  • [[yii\web\Response::FORMAT_HTML|HTML]]: реализуется классом [[yii\web\HtmlResponseFormatter]].
  • [[yii\web\Response::FORMAT_XML|XML]]: реализуется классом [[yii\web\XmlResponseFormatter]].
  • [[yii\web\Response::FORMAT_JSON|JSON]]: реализуется классом [[yii\web\JsonResponseFormatter]].
  • [[yii\web\Response::FORMAT_JSONP|JSONP]]: реализуется классом [[yii\web\JsonResponseFormatter]].

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

public function actionIndex()
{
    return $this->render('index');
}

Действие index в коде выше возвращает результат рендеринга представления index. Возвращаемое значение будет взято компонентом response, отформатировано и затем отправлено пользователям.

Так как по умолчанию форматом ответа является [[yii\web\Response::FORMAT_HTML|HTML]], в методе действия следует вернуть строку. Если вы хотите использовать другой формат ответа, необходимо настроить его перед отправкой данных:

public function actionInfo()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    return [
        'message' => 'hello world',
        'code' => 100,
    ];
}

Как уже было сказано, кроме использования стандартного компонента приложения response вы также можете создавать свои объекты ответа и отправлять их конечным пользователям. Вы можете сделать это, возвращая такой объект в методе действия:

public function actionInfo()
{
    return \Yii::createObject([
        'class' => 'yii\web\Response',
        'format' => \yii\web\Response::FORMAT_JSON,
        'data' => [
            'message' => 'hello world',
            'code' => 100,
        ],
    ]);
}

Note: создавая собственные объекты ответов, вы не сможете воспользоваться конфигурацией компонента response, настроенной вами в конфигурации приложения. Тем не менее, вы можете воспользоваться внедрением зависимости, чтобы применить общую конфигурацию к вашим новым объектам ответа.

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )


Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'