@bighoc
php/javascript developer

Как сделать респонсе с Content-Type «application/javascript» в Yii 2?

Делаю как то так

$headers = Yii::$app->response->headers;
        $headers->add('Content-Type', 'application/javascript');
        return "console.log('hello');";


но в хедере приходит
Content-Type:text/html; charset=UTF-8
  • Вопрос задан
  • 10371 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
@zhdanovartur
На примере sitemap.xml где не нужна обертка в <response/>:

public function actionSitemap()
{
    $response = Yii::$app->response;
    $response->format = Response::FORMAT_RAW;
    $response->getHeaders()->set('Content-Type', 'application/xml; charset=utf-8');

    return $this->render('sitemap');
}
Ответ написан
Комментировать
@bIbI4k0
Питоню
Используйте метод set() вместо add(), ибо
www.yiiframework.com/doc-2.0/yii-web-headercollect...()-detail
If there is already a header with the same name, the new one will be appended to it instead of replacing it.
Ответ написан
Anton_Gorodezkiy
@Anton_Gorodezkiy
У меня вот так вот получилось. Вместо результата вызова render возвращаете прямо массив:
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return [
			'isError' => false,
			'message' => $message,
			'data' => $data
		];
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы