ArticleController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Module\Article\AdminControllers;
  3. use App\Module\Article\AdminControllers\Helper\FilterHelper;
  4. use App\Module\Article\AdminControllers\Helper\FormHelper;
  5. use App\Module\Article\AdminControllers\Helper\GridHelper;
  6. use App\Module\Article\AdminControllers\Helper\ShowHelper;
  7. use App\Module\Article\Enums\STATUS;
  8. use App\Module\Article\Models\Article;
  9. use App\Module\Article\Models\ArticleCate;
  10. use App\Module\Article\Repositories\ArticleRepositories;
  11. use Dcat\Admin\Admin;
  12. use Dcat\Admin\Form;
  13. use Dcat\Admin\Grid;
  14. use Dcat\Admin\Show;
  15. use Dcat\Admin\Http\Controllers\AdminController;
  16. use Spatie\RouteAttributes\Attributes\Resource;
  17. /**
  18. * 文章管理控制器
  19. */
  20. #[Resource('article')]
  21. class ArticleController extends AdminController
  22. {
  23. /**
  24. * 页面标题
  25. *
  26. * @var string
  27. */
  28. protected $title = '文章管理';
  29. /**
  30. * 创建 Repository 实例
  31. *
  32. * @return ArticleRepositories
  33. */
  34. protected function repository()
  35. {
  36. return new ArticleRepositories();
  37. }
  38. /**
  39. * 列表页
  40. *
  41. * @return Grid
  42. */
  43. protected function grid()
  44. {
  45. return Grid::make($this->repository(), function (Grid $grid) {
  46. $helper = new GridHelper($grid, $this);
  47. $helper->columnId();
  48. $helper->columnTitle();
  49. $helper->columnCategory();
  50. $helper->columnStatus();
  51. $helper->columnViewsCount();
  52. $helper->columnIsTop();
  53. $helper->columnIsRecommend();
  54. $helper->columnSortOrder();
  55. $helper->columnCreatedAt();
  56. $helper->columnUpdatedAt();
  57. // 筛选
  58. $grid->filter(function (Grid\Filter $filter) {
  59. $helper = new FilterHelper($filter, $this);
  60. $helper->equalId();
  61. $helper->likeTitle();
  62. $helper->equalCategory();
  63. $helper->equalStatus();
  64. $helper->equalIsTop();
  65. $helper->equalIsRecommend();
  66. $helper->betweenCreatedAt();
  67. });
  68. // 行操作
  69. $grid->actions(function (Grid\Displayers\Actions $actions) {
  70. $actions->disableView();
  71. });
  72. });
  73. }
  74. /**
  75. * 详情页
  76. *
  77. * @param mixed $id
  78. * @return Show
  79. */
  80. protected function detail($id)
  81. {
  82. return Show::make($id, new Article(), function (Show $show) {
  83. $helper = new ShowHelper($show, $this);
  84. $helper->fieldId();
  85. $helper->fieldTitle();
  86. $helper->fieldDescription();
  87. $helper->fieldCategory();
  88. $helper->fieldStatus();
  89. $helper->fieldViewsCount();
  90. $helper->fieldIsTop();
  91. $helper->fieldIsRecommend();
  92. $helper->fieldSortOrder();
  93. $helper->fieldContent();
  94. $helper->fieldCreatedBy();
  95. $helper->fieldCreatedAt();
  96. $helper->fieldUpdatedAt();
  97. });
  98. }
  99. /**
  100. * 表单
  101. *
  102. * @return Form
  103. */
  104. protected function form()
  105. {
  106. return Form::make(Article::class, function (Form $form) {
  107. $helper = new FormHelper($form, $this);
  108. $helper->textTitle();
  109. $helper->textareaDescription();
  110. $helper->selectCategory();
  111. $helper->selectStatus();
  112. $helper->numberSortOrder();
  113. $helper->switchIsTop();
  114. $helper->switchIsRecommend();
  115. $helper->editorContent();
  116. $helper->hiddenCreatedBy();
  117. });
  118. }
  119. }