GroupItemController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Module\GameItems\AdminControllers;
  3. use App\Module\GameItems\Models\ItemGroup;
  4. use App\Module\GameItems\Models\ItemGroupItem;
  5. use App\Module\GameItems\Models\ItemItem;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use UCore\DcatAdmin\AdminController;
  10. use Spatie\RouteAttributes\Attributes\Resource;
  11. #[Resource('game-items-group-items', names: 'dcat.admin.game-items-group-items')]
  12. class GroupItemController extends AdminController
  13. {
  14. /**
  15. * 标题
  16. *
  17. * @var string
  18. */
  19. protected $title = '物品组内容管理';
  20. /**
  21. * 列表页
  22. *
  23. * @return Grid
  24. */
  25. protected function grid()
  26. {
  27. return Grid::make(new ItemGroupItem(), function (Grid $grid) {
  28. $grid->column('id', 'ID')->sortable();
  29. $grid->column('group.name', '物品组');
  30. $grid->column('item.name', '物品');
  31. $grid->column('weight', '权重');
  32. $grid->column('created_at', '创建时间');
  33. $grid->column('updated_at', '更新时间');
  34. // 筛选
  35. $grid->filter(function ($filter) {
  36. $filter->equal('id', 'ID');
  37. $filter->equal('group_id', '物品组')->select(
  38. ItemGroup::pluck('name', 'id')
  39. );
  40. $filter->equal('item_id', '物品')->select(
  41. ItemItem::pluck('name', 'id')
  42. );
  43. });
  44. return $grid;
  45. });
  46. }
  47. /**
  48. * 详情页
  49. *
  50. * @param mixed $id
  51. * @return Show
  52. */
  53. protected function detail($id)
  54. {
  55. return Show::make($id, new ItemGroupItem(), function (Show $show) {
  56. $show->field('id', 'ID');
  57. $show->field('group.name', '物品组');
  58. $show->field('item.name', '物品');
  59. $show->field('weight', '权重');
  60. $show->field('created_at', '创建时间');
  61. $show->field('updated_at', '更新时间');
  62. return $show;
  63. });
  64. }
  65. /**
  66. * 表单
  67. *
  68. * @return Form
  69. */
  70. protected function form()
  71. {
  72. return Form::make(new ItemGroupItem(), function (Form $form) {
  73. $form->select('group_id', '物品组')
  74. ->options(ItemGroup::pluck('name', 'id'))
  75. ->required();
  76. $form->select('item_id', '物品')
  77. ->options(ItemItem::pluck('name', 'id'))
  78. ->required();
  79. $form->number('weight', '权重')
  80. ->default(1.0)
  81. ->min(0.001)
  82. ->step(0.001)
  83. ->required()
  84. ->help('权重越高,随机选择时概率越大');
  85. return $form;
  86. });
  87. }
  88. }