/** * @inheritdoc */ public function init() { parent::init(); if (!Yii::$app instanceof Application) { return; } Event::on(Controller::className(), 'beforeAction', [$this, 'beforeActionAccess']); if ($this->removeDeniedLinks) { Event::on(Response::className(), 'afterPrepare', [$this, 'responseAfterPrepare']); } }
protected function response() { // Setting default format of response is json. Yii::$app->response->format = Response::FORMAT_JSON; Event::on(Response::className(), Response::EVENT_BEFORE_SEND, function ($event) { // Clean output. for ($level = ob_get_level(); $level > 0; --$level) { if (!@ob_end_clean()) { ob_clean(); } } /* @var $response \yii\web\Response */ /* @var $event \yii\base\Event */ $response = $event->sender; }); }
<?php $params = array_merge(require __DIR__ . '/../../common/config/params.php', require __DIR__ . '/../../common/config/params-local.php', require __DIR__ . '/params.php', require __DIR__ . '/params-local.php'); return ['id' => 'app-api', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'api\\controllers', 'bootstrap' => ['log'], 'defaultRoute' => 'v1/default', 'modules' => ['v1' => ['basePath' => '@app/modules/v1', 'class' => \api\modules\v1\Module::className()]], 'bootstrap' => [['class' => \yii\filters\ContentNegotiator::className(), 'formats' => ['application/json' => \yii\web\Response::FORMAT_JSON, 'application/xml' => \yii\web\Response::FORMAT_XML]]], 'components' => ['log' => ['traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [['class' => 'yii\\log\\FileTarget', 'levels' => ['error', 'warning']]]], 'urlManager' => ['rules' => ['<controller:\\w+>/<id:[\\d\\-]+>' => 'v1/<controller>/view', '<controller:\\w+>/<action:\\w+>/<id:[\\d\\-]+>' => 'v1/<controller>/<action>', '<controller:\\w+>/<action:\\w+>' => 'v1/<controller>/<action>']], 'response' => ['class' => \yii\web\Response::className(), 'on beforeSend' => function ($event) { $response = $event->sender; if ($response->data !== null && ($exception = Yii::$app->getErrorHandler()->exception) !== null) { $response->data = ['error' => $response->data]; } }]], 'params' => $params];
/** * @inheritdoc */ public function run() { $m = Yii::$app->getModule(Module::MODULE); $out = $this->validateEditable(); unset($m); return Yii::createObject(['class' => Response::className(), 'format' => Response::FORMAT_JSON, 'data' => $out]); }