Module.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/2/25
  6. * Time: 下午2:24
  7. */
  8. namespace api\modules\v1;
  9. use common\enums\CodeEnum;
  10. class Module extends \yii\base\Module
  11. {
  12. public $defaultRoute = 'site';
  13. public function init()
  14. {
  15. parent::init();
  16. \Yii::$app->set('response', [
  17. 'class' => 'yii\web\Response',
  18. 'format' => 'json',
  19. 'on afterSend' => function ($event) {
  20. },
  21. 'on beforeSend' => function($event) {
  22. $response = $event->sender;
  23. if ($response->data !== null) {
  24. if (!$response->isSuccessful) {
  25. $result = $response->data;
  26. if ($response->statusCode == 422) {
  27. $response->data = [
  28. 'errcode' => $response->statusCode,
  29. 'errmsg' => $result[0]['message'],
  30. ];
  31. } else {
  32. $response->data = [
  33. 'errcode' => isset($result['status']) ? $result['status'] : $response->statusCode,
  34. 'errmsg' => $result['message'],
  35. ];
  36. }
  37. $response->statusCode = 200;
  38. } else {
  39. $result = $response->data;
  40. $response->data = array_merge([
  41. 'errcode' => 0,
  42. 'errmsg' => 'ok',
  43. ], $result);
  44. }
  45. }
  46. //支持兼容多种json状态和信息数据
  47. $result = $response->data;
  48. $msg = $result['errmsg'];
  49. $code = $result['errcode'];
  50. $response->data = array_merge([
  51. 'info' => $msg,
  52. 'msg' => $msg,
  53. 'status' => CodeEnum::getStatus($code),
  54. 'code' => CodeEnum::getStatus($code),
  55. ], $result);
  56. }
  57. ]);
  58. }
  59. }