Controller.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/3/2
  6. * Time: 下午2:07
  7. */
  8. namespace api\common\controllers;
  9. use api\common\behaviors\ValidateBehavior;
  10. use common\enums\CodeEnum;
  11. use Yii;
  12. use yii\filters\Cors;
  13. use yii\rest\Serializer;
  14. use yii\web\ServerErrorHttpException;
  15. class Controller extends \yii\rest\Controller
  16. {
  17. /**
  18. * 配置让dataProvider序列化后使用data统一接收
  19. * @var array
  20. */
  21. public $serializer = [
  22. 'class' => 'yii\rest\Serializer',
  23. 'collectionEnvelope' => 'data'
  24. ];
  25. public function behaviors()
  26. {
  27. $behaviors = parent::behaviors();
  28. unset($behaviors['contentNegotiator']);
  29. $behaviors['cors'] = [
  30. 'class' => Cors::className(),
  31. ];
  32. $behaviors['validate'] = ValidateBehavior::className();
  33. return $behaviors;
  34. }
  35. /**
  36. * 重写serializeData 函数,格式化返回数据 model序列号后使用data统一接收
  37. * @param mixed $data
  38. * @return mixed
  39. * @throws \yii\base\InvalidConfigException
  40. * @author nodelog
  41. */
  42. protected function serializeData($data)
  43. {
  44. /* @var Serializer $serializer */
  45. $serializer = Yii::createObject($this->serializer);
  46. if (is_array($data) && isset($data['data'])) {
  47. $data['data'] = $serializer->serialize($data['data']);
  48. }
  49. //序列化数据
  50. $data = $serializer->serialize($data);
  51. //接口版本号
  52. $data['version'] = Yii::$app->config->get('version');
  53. return $data;
  54. }
  55. }