EpisodesListController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Admin\Controllers\Episode;
  3. /*设置内存 保证上传到 OSS*/
  4. ini_set ('memory_limit', '512M');
  5. use App\Admin\Actions\Grid\BatchEditEpisodeList;
  6. use App\Models\Episode;
  7. use App\Models\EpisodesList;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Layout\Content;
  11. use Dcat\Admin\Show;
  12. use Dcat\Admin\Http\Controllers\AdminController;
  13. class EpisodesListController extends AdminController
  14. {
  15. /* @var Episode $episode*/
  16. private $episode;
  17. protected function title()
  18. {
  19. return $this->episode->name;
  20. }
  21. protected function content(Content $content, $episodeId = 0)
  22. {
  23. $this->episode = Episode::find($episodeId);
  24. return $content
  25. ->translation($this->translation())
  26. ->breadcrumb(
  27. ['text' => $this->episode->name],
  28. ['text' => '剧集上传'],
  29. )
  30. ->title($this->title())
  31. ->description('剧集上传');
  32. }
  33. public function index(Content $content,$episodeId = 0)
  34. {
  35. return $this->content($content,$episodeId)
  36. ->body($this->grid());
  37. }
  38. public function create(Content $content,$episodeId = 0)
  39. {
  40. return $this->content($content,$episodeId)
  41. ->body($this->form());
  42. }
  43. public function update($episodeId, $id = 0)
  44. {
  45. $this->episode = Episode::find($episodeId);
  46. return $this->form()->update($id);
  47. }
  48. public function store($episodeId = 0)
  49. {
  50. $this->episode = Episode::find($episodeId);
  51. return $this->form()->store();
  52. }
  53. public function edit($episodeId, Content $content, $id = 0)
  54. {
  55. return $this->content($content,$episodeId)
  56. ->body($this->form()->edit($id));
  57. }
  58. /**
  59. * Make a grid builder.
  60. *
  61. * @return Grid
  62. */
  63. protected function grid()
  64. {
  65. return Grid::make(EpisodesList::with(['episode'])->where('episodes_id', $this->episode->id), function (Grid $grid) {
  66. //$grid->column('id');
  67. $grid->column('sort')->display(function (){
  68. return '第'.$this->sort.'集';
  69. })->editable();
  70. $grid->column('episode.name','剧集名称');
  71. $grid->column('is_free')
  72. ->using(config('global.episode_free'))
  73. ->label(['success', 'primary'])->sortable();
  74. $grid->column('origin_price')->editable();
  75. $grid->column('sale_price')->editable();
  76. $grid->column('url')->display(function (){
  77. return '<a href="'.$this->url.'">视频链接</a>';
  78. });
  79. $url = admin_url('/episodes/batch/'.$this->episode->id.'/upload');
  80. $grid->tools('<a href="'.$url.'" class="btn btn-primary btn-outline">
  81. <i class="feather icon-upload"></i><span class="d-none d-sm-inline">&nbsp;&nbsp;批量上传</span></a>');
  82. $grid->hideColumns(['id']);
  83. $grid->batchActions([new BatchEditEpisodeList()]);
  84. $grid->disableViewButton();
  85. });
  86. }
  87. /**
  88. * Make a form builder.
  89. *
  90. * @return Form
  91. */
  92. protected function form()
  93. {
  94. return Form::make(new EpisodesList(), function (Form $form) {
  95. $sort = EpisodesList::where('episodes_id',$this->episode->id)->max('sort');
  96. $form->hidden('id');
  97. $form->hidden('episodes_id')->value();
  98. $form->number('sort')->default($sort + 1)->min(1);
  99. $form->radio('is_free')
  100. ->options(config('global.episode_free'))
  101. ->when(0, function (Form $form) {
  102. $form->number('sale_price')->min(1);;
  103. })->default(1);
  104. $form->file('url')->chunkSize(1024)->maxSize(1024 * 1024)->saveFullUrl()
  105. ->uniqueName()->autoUpload()
  106. ->autoSave(false)
  107. ->removable(false)
  108. ->width(4)->required();;
  109. $form->display('created_at');
  110. $form->disableViewButton();
  111. $form->disableDeleteButton();
  112. $form->disableListButton();
  113. $form->disableEditingCheck();
  114. $form->disableViewCheck();
  115. $form->disableCreatingCheck();
  116. });
  117. }
  118. }