ResponseMacroServiceProvider.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 Response::json($res)
  26. ->header("Content-type","application/json")
  27. ->header("Access-Control-Allow-Origin","*")
  28. ->header("Access-Control-Allow-Methods","GET, OPTIONS, POST")
  29. ->header("Access-Control-Allow-Credentials",true)
  30. ->header("Access-Control-Allow-Headers","Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin");
  31. });
  32. Response::macro('error', function ($name, $data=[]) {
  33. $error = config('error');
  34. $res=[];
  35. $res['code'] = (int)$error[$name]['code'];
  36. $res['msg'] = $error[$name]['msg'];
  37. if($data) $res['data'] = $data;
  38. return Response::json($res)
  39. ->header("Content-type","application/json")
  40. ->header("Access-Control-Allow-Origin","*")
  41. ->header("Access-Control-Allow-Methods","GET, OPTIONS, POST")
  42. ->header("Access-Control-Allow-Credentials",true)
  43. ->header("Access-Control-Allow-Headers","Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin");
  44. });
  45. Response::macro('item', function ($trans, $data) {
  46. if($data)
  47. {
  48. return response()->success($trans->transform($data));
  49. }else{
  50. return response()->error('NOT_EXIST');
  51. }
  52. });
  53. Response::macro('collection', function ($trans, $data) {
  54. $ret_data = [];
  55. if($data)
  56. {
  57. foreach ($data as $item)
  58. {
  59. $ret_data[] = $trans->transform($item);
  60. }
  61. }
  62. return response()->success($ret_data);
  63. });
  64. Response::macro('pagination', function ($trans, $paginator) {
  65. $ret = [];
  66. $ret['list'] = [];
  67. if($paginator)
  68. {
  69. foreach ($paginator as $item)
  70. {
  71. $ret['list'][] = $trans->transform($item);
  72. }
  73. $ret['meta']= [
  74. 'total'=>(int)$paginator->total(),
  75. 'per_page'=>(int)$paginator->perPage(),
  76. 'current_page'=>(int)$paginator->currentPage(),
  77. 'last_page'=>(int)$paginator->lastPage(),
  78. 'next_page_url'=>(string)$paginator->nextPageUrl(),
  79. 'prev_page_url'=>(string)$paginator->previousPageUrl()
  80. ];
  81. }
  82. return response()->success($ret);
  83. });
  84. }
  85. /**
  86. * Register the application services.
  87. *
  88. * @return void
  89. */
  90. public function register()
  91. {
  92. //
  93. }
  94. }