ResponseMacroServiceProvider.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\ServiceProvider;
  4. use Illuminate\Support\Facades\Response;
  5. class ResponseMacroServiceProvider extends ServiceProvider
  6. {
  7. /**
  8. * Register the application's response macros.
  9. *
  10. * @return void
  11. */
  12. public function boot()
  13. {
  14. Response::macro('success', function ($data=[]) {
  15. // header("Content-type: application/json");
  16. // header("Access-Control-Allow-Origin: *" );
  17. // header("Access-Control-Allow-Methods: GET, OPTIONS, POST");
  18. // header("Access-Control-Allow-Credentials: true");
  19. // header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin");
  20. $res=[];
  21. $res['code'] = 0;
  22. $res['msg'] = isset($data['msg']) ? $data['msg'] : '';
  23. //if(!$data) $data = (object)$data;
  24. $res['data'] = $data;
  25. // return $res;
  26. return Response::json($res)
  27. ->header("Content-type","application/json")
  28. ->header("Access-Control-Allow-Origin","*")
  29. ->header("Access-Control-Allow-Methods","GET, OPTIONS, POST")
  30. ->header("Access-Control-Allow-Credentials",true)
  31. ->header("Access-Control-Allow-Headers","Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin");
  32. });
  33. Response::macro('error', function ($name, $data=[]) {
  34. $error = config('error');
  35. $res=[];
  36. $res['code'] = (int)$error[$name]['code'];
  37. $res['msg'] = $error[$name]['msg'];
  38. if($data) $res['data'] = $data;
  39. return Response::json($res)
  40. ->header("Content-type","application/json")
  41. ->header("Access-Control-Allow-Origin","*")
  42. ->header("Access-Control-Allow-Methods","GET, OPTIONS, POST")
  43. ->header("Access-Control-Allow-Credentials",true)
  44. ->header("Access-Control-Allow-Headers","Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin");
  45. });
  46. Response::macro('item', function ($trans, $data) {
  47. if($data)
  48. {
  49. return response()->success($trans->transform($data));
  50. }else{
  51. return response()->error('NOT_EXIST');
  52. }
  53. });
  54. Response::macro('collection', function ($trans, $data) {
  55. $ret_data = [];
  56. if($data)
  57. {
  58. foreach ($data as $item)
  59. {
  60. $ret_data[] = $trans->transform($item);
  61. }
  62. }
  63. return response()->success($ret_data);
  64. });
  65. Response::macro('pagination', function ($trans, $paginator) {
  66. $ret = [];
  67. $ret['list'] = [];
  68. if($paginator)
  69. {
  70. foreach ($paginator as $item)
  71. {
  72. $ret['list'][] = $trans->transform($item);
  73. }
  74. $ret['meta']= [
  75. 'total'=>(int)$paginator->total(),
  76. 'per_page'=>(int)$paginator->perPage(),
  77. 'current_page'=>(int)$paginator->currentPage(),
  78. 'last_page'=>(int)$paginator->lastPage(),
  79. 'next_page_url'=>(string)$paginator->nextPageUrl(),
  80. 'prev_page_url'=>(string)$paginator->previousPageUrl()
  81. ];
  82. }
  83. return response()->success($ret);
  84. });
  85. }
  86. /**
  87. * Register the application services.
  88. *
  89. * @return void
  90. */
  91. public function register()
  92. {
  93. //
  94. }
  95. }