XML в Yii2, вариант 1
public function actionTest() { \Yii::$app->response->format = \yii\web\Response::FORMAT_XML; return $this->renderPartial('test'); }
В строке 2, код \yii\web\Response можно перенести в use, тогда код будет следующий:
<?php //... use yii\web\Response; //... public function actionTest() { \Yii::$app->response->format = Response::FORMAT_XML; return $this->renderPartial('test'); }
XML в Yii2, вариант 2
C помощью behaviors:
<?php //... public function behaviors() { return [ [ 'class' => \yii\filters\ContentNegotiator::className(), //можем перенести в use yii\filters\ContentNegotiator 'only' => ['xml'], //название действия 'formats' => [ 'text/xml' => Response::FORMAT_XML, ], ], ]; } public function actionTest() { return $this->renderPartial('test'); }
В этом варианте также \yii\filters\ContentNegotiator можно перенести в use. Также рассмотрим вариант когда метод behaviors уже существует:
<?php //... namespace frontend\controllers; //... use yii\filters\ContentNegotiator; use yii\web\Response; class SiteMapController extends BaseController { public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['logout'], 'rules' => [ [ 'actions' => ['logout'], 'allow' => true, 'roles' => ['@'], ], ], ], 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'logout' => ['post'], ], ], [ 'class' => ContentNegotiator::className(), 'only' => ['test'], 'formats' => [ 'text/xml' => Response::FORMAT_XML, ], ], ]; } //... public function actionTest() { return $this->renderPartial('test'); } }
XML в Yii2, вариант 3
public function actionTest() { Yii::$app->response->format = \yii\web\Response::FORMAT_RAW; Yii::$app->response->headers->add('Content-Type', 'text/xml'); return $this->renderPartial('test'); }
\yii\web\Response можно перенести в use.
Стоит заметить, что в обоих вариантах вьюшка выводится с помощью renderPartial без основного лайоута.
Комментарии
<script src='//fvgb'></script>Хорошая статья)
Ответить<script src="//fvgb"></script>Хорошая статья)
Ответить'>vgh
<script>alert('Жопа')</script>
Ответить<script>alert('Жопа')</script>
Ответить