JsonController.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace app\components\rest;
  3. use yii\filters\ContentNegotiator;
  4. use yii\filters\Cors;
  5. use yii\filters\VerbFilter;
  6. use yii\rest\Controller;
  7. use yii\web\Response;
  8. class JsonController extends Controller {
  9. public $serializer = 'app\components\rest\Serializer';
  10. public function behaviors() {
  11. $behavior = parent::behaviors();
  12. $behavior['contentNegotiator'] = [
  13. 'class' => ContentNegotiator::className(),
  14. 'formats' => [
  15. 'application/json' => Response::FORMAT_JSON,
  16. 'application/xml' => Response::FORMAT_XML,
  17. ],
  18. ];
  19. $behavior['corsFilter'] = [
  20. 'class' => Cors::className(),
  21. 'cors' => [
  22. 'Origin' => ['*'],
  23. 'Access-Control-Request-Method' => [
  24. 'GET', 'POST', 'PUT', 'PATCH',
  25. 'DELETE', 'HEAD', 'OPTIONS'
  26. ],
  27. 'Access-Control-Request-Headers' => ['*'],
  28. ],
  29. ];
  30. $behavior["authenticator"]["except"] = ['options'];
  31. return $behavior;
  32. }
  33. public function beforeAction($action) {
  34. if (!parent::beforeAction($action)) return false;
  35. \Yii::$app->getResponse()->format = Response::FORMAT_JSON;
  36. return true;
  37. }
  38. }