LibraryBookController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\LibraryBook;
  4. use App\Models\LibraryCategory;
  5. use Dcat\Admin\Admin;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. class LibraryBookController extends AdminController
  11. {
  12. /**
  13. * Make a grid builder.
  14. *
  15. * @return Grid
  16. */
  17. protected function grid()
  18. {
  19. return Grid::make(new LibraryBook(['category']), function (Grid $grid) {
  20. $grid->model()->orderByDesc('id');
  21. $grid->column('id')->sortable();
  22. $grid->column('name')->link(function () {
  23. return $this->body;
  24. });
  25. $grid->column('cover_path')->image('', 200, 100);
  26. $grid->column('category.name', '分类名称');
  27. $grid->column('resource_type')->using(LibraryCategory::resourceTypeMaps)->label();
  28. $grid->column('source');
  29. // $grid->column('body');
  30. $grid->column('sort', '排序')->sortable();
  31. $grid->column('status', '状态')->using(\App\Models\LibraryBook::statusMaps)->label();
  32. // $grid->column('created_at');
  33. $grid->column('updated_at')->sortable();
  34. $grid->filter(function (Grid\Filter $filter) {
  35. $filter->equal('id');
  36. $filter->like('name', '名称');
  37. $filter->in('category_id', '分类')->multipleSelect(LibraryCategory::selectOptions());
  38. $filter->in('resource_type', '资源类型')->multipleSelect(\App\Models\LibraryCategory::resourceTypeMaps);
  39. $filter->like('source', '来源');
  40. $filter->equal('status', '状态')->select(\App\Models\LibraryBook::statusMaps);
  41. });
  42. });
  43. }
  44. /**
  45. * Make a show builder.
  46. *
  47. * @param mixed $id
  48. *
  49. * @return Show
  50. */
  51. protected function detail($id)
  52. {
  53. return Show::make($id, new LibraryBook(), function (Show $show) {
  54. $show->field('id');
  55. $show->field('name');
  56. $show->field('cover_path');
  57. $show->field('resource_type');
  58. $show->field('category_id');
  59. $show->field('source');
  60. $show->field('body');
  61. $show->field('sort');
  62. $show->field('status');
  63. $show->field('created_at');
  64. $show->field('updated_at');
  65. });
  66. }
  67. /**
  68. * Make a form builder.
  69. *
  70. * @return Form
  71. */
  72. protected function form()
  73. {
  74. return Form::make(new LibraryBook(), function (Form $form) {
  75. $form->display('id');
  76. $form->select('category_id')->options(LibraryCategory::selectOptions())->required();
  77. $form->select('resource_type')->options(LibraryCategory::resourceTypeMaps)->required();
  78. $form->text('name')->required();
  79. $form->image('cover_path')->uniqueName()->autoUpload()->required();
  80. $form->url('body')->required();
  81. $form->text('source')->required();
  82. $form->number('sort', '排序')->default(0)->help('越大越靠前');
  83. $form->select('status', '状态')->options(\App\Models\LibraryCategory::statusMaps)->default(1);
  84. $form->hidden('admin_id')->value(Admin::user()->id);
  85. $form->saved(function (Form $form) {
  86. return $form->response()->success('保存成功')->redirect('/library/book');
  87. });
  88. $form->disableEditingCheck();
  89. $form->disableDeleteButton();
  90. $form->disableViewButton();
  91. });
  92. }
  93. }