PetUserLazyRenderable.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace App\Module\Pet\AdminControllers\LazyRenderable;
  3. use App\Module\Pet\Models\PetUser;
  4. use App\Module\Pet\Enums\PetGrade;
  5. use App\Module\Pet\Enums\PetStatus;
  6. use App\Module\Pet\Repositorys\PetUserRepository;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Grid\LazyRenderable;
  9. class PetUserLazyRenderable extends LazyRenderable
  10. {
  11. /**
  12. * 获取模型ID字段
  13. *
  14. * @return string
  15. */
  16. public function getModelSelectId()
  17. {
  18. return 'id';
  19. }
  20. /**
  21. * 获取模型显示字段
  22. *
  23. * @return string
  24. */
  25. public function getModelViewName()
  26. {
  27. return 'name';
  28. }
  29. /**
  30. * 获取模型类
  31. *
  32. * @return string
  33. */
  34. public function getModel()
  35. {
  36. return PetUser::class;
  37. }
  38. /**
  39. * 渲染表格
  40. *
  41. * @return Grid
  42. */
  43. public function grid(): Grid
  44. {
  45. return Grid::make(new PetUserRepository(), function (Grid $grid) {
  46. $grid->column('id', 'ID')->sortable();
  47. $grid->column('name', '宠物名称');
  48. $grid->column('grade', '品阶')->display(function ($value) {
  49. if ($value instanceof PetGrade) {
  50. $value = $value->value;
  51. }
  52. $labels = [
  53. PetGrade::FIRST->value => '一品',
  54. PetGrade::SECOND->value => '二品',
  55. PetGrade::THIRD->value => '三品',
  56. PetGrade::FOURTH->value => '四品',
  57. ];
  58. return $labels[$value] ?? '未知';
  59. });
  60. $grid->column('level', '等级');
  61. $grid->column('status', '状态')->display(function ($value) {
  62. if ($value instanceof PetStatus) {
  63. $value = $value->value;
  64. }
  65. $labels = [
  66. PetStatus::NONE->value => '未知',
  67. PetStatus::NORMAL->value => '正常',
  68. PetStatus::FIGHTING->value => '战斗中',
  69. PetStatus::DEAD->value => '死亡',
  70. ];
  71. return $labels[$value] ?? '未知';
  72. });
  73. $grid->quickSearch(['id', 'name']);
  74. $grid->filter(function (Grid\Filter $filter) {
  75. $filter->equal('id', 'ID');
  76. $filter->like('name', '宠物名称');
  77. $filter->equal('grade', '品阶')->select([
  78. PetGrade::FIRST->value => '一品',
  79. PetGrade::SECOND->value => '二品',
  80. PetGrade::THIRD->value => '三品',
  81. PetGrade::FOURTH->value => '四品',
  82. ]);
  83. $filter->equal('status', '状态')->select([
  84. PetStatus::NONE->value => '未知',
  85. PetStatus::NORMAL->value => '正常',
  86. PetStatus::FIGHTING->value => '战斗中',
  87. PetStatus::DEAD->value => '死亡',
  88. ]);
  89. });
  90. $grid->disablePagination(true);
  91. $grid->disableActions();
  92. $grid->disableBatchActions();
  93. $grid->disableCreateButton();
  94. });
  95. }
  96. }