GroupController.php 2.8 KB

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