CustomSerializer.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Serializers;
  3. use League\Fractal\Pagination\PaginatorInterface;
  4. use League\Fractal\Serializer\ArraySerializer;
  5. class CustomSerializer extends ArraySerializer
  6. {
  7. /**
  8. * Serialize a collection.
  9. *
  10. * @param string $resourceKey
  11. * @param array $data
  12. *
  13. * @return array
  14. */
  15. public function collection($resourceKey, array $data)
  16. {
  17. $resultData = ['data' => $data, 'status_code' => 200, 'message' => 'success'];
  18. if (!empty($resourceKey)) {
  19. $resultData['total'] = $resourceKey;
  20. }
  21. return $resultData;
  22. }
  23. public function array(){}
  24. /**
  25. * Serialize an item.
  26. *
  27. * @param string $resourceKey
  28. * @param array $data
  29. *
  30. * @return array
  31. */
  32. public function item($resourceKey, array $data)
  33. {
  34. return ['data' => $data, 'status_code' => 200, 'message' => 'success'];
  35. }
  36. /**
  37. * Serialize null resource.
  38. *
  39. * @return array
  40. */
  41. public function null()
  42. {
  43. return ['data' => [], 'status_code' => 200, 'message' => 'success'];
  44. }
  45. // /**
  46. // * Serialize null resource.
  47. // *
  48. // * @return array
  49. // */
  50. // public function null()
  51. // {
  52. // return null;
  53. // }
  54. /**
  55. * Serialize the paginator.
  56. *
  57. * @param PaginatorInterface $paginator
  58. *
  59. * @return array
  60. */
  61. public function paginator(PaginatorInterface $paginator)
  62. {
  63. $currentPage = (int) $paginator->getCurrentPage();
  64. $lastPage = (int) $paginator->getLastPage();
  65. $pagination = [
  66. 'total' => (int) $paginator->getTotal(),
  67. 'count' => (int) $paginator->getCount(),
  68. 'per_page' => (int) $paginator->getPerPage(),
  69. 'current_page' => $currentPage,
  70. 'total_pages' => $lastPage,
  71. ];
  72. $pagination['links']['previous'] = null;
  73. $pagination['links']['next'] = null;
  74. if ($currentPage > 1) {
  75. $pagination['links']['previous'] = $paginator->getUrl($currentPage - 1);
  76. }
  77. if ($currentPage < $lastPage) {
  78. $pagination['links']['next'] = $paginator->getUrl($currentPage + 1);
  79. }
  80. if (!array_filter($pagination['links'])) {
  81. $pagination['links'] = null;
  82. }
  83. return ['pagination' => $pagination];
  84. }
  85. }