GroupController.php 3.3 KB

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