EpisodesBatchUploadController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Admin\Controllers\Episode;
  3. /*设置内存 保证上传到 OSS*/
  4. ini_set ('memory_limit', '512M');
  5. use App\Admin\Actions\Grid\BatchEditEpisode;
  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 EpisodesBatchUploadController extends AdminController
  14. {
  15. private $id = null;
  16. public function index(Content $content, $id = 0)
  17. {
  18. $this->id = $id;
  19. $episode = Episode::find($id);
  20. $form = $this->form();
  21. return $content
  22. ->title($episode->name)
  23. ->breadcrumb(
  24. ['text' => $episode->name],
  25. ['text' => '剧集上传'],
  26. )
  27. ->body($form)
  28. ->description('剧集上传');
  29. }
  30. public function store($id = 0)
  31. {
  32. $req = request()->post();
  33. $form = new Form();
  34. $response = $form->response();
  35. if(isset($req['lists']) && empty($req['lists'])) {
  36. return $response->error('请上传剧集');
  37. }else if(!isset($req['lists'])){
  38. return $this->form()->store();
  39. }
  40. $lists = explode(',',$req['lists']);
  41. $sort = EpisodesList::where('episodes_id',$id)->max('sort');
  42. foreach ($lists as $list)
  43. {
  44. $episode = new EpisodesList();
  45. $episode->episodes_id = $id;
  46. $episode->sort = ++$sort;
  47. $episode->url = $list;
  48. $episode->save();
  49. }
  50. return $response->success(__('admin.save_succeeded'))
  51. ->redirect(admin_url("/episodes/{$id}/lists"));
  52. }
  53. public function form()
  54. {
  55. $id = $this->id;
  56. return new Form(new EpisodesList(), function (Form $form) use ($id) {
  57. $form->action(admin_url("/episodes/batch/{$id}/upload"));
  58. $form->tools(
  59. function (Form\Tools $tools) {
  60. $tools->disableList();
  61. }
  62. );
  63. $form->disableHeader();
  64. $form->disableCreatingCheck();
  65. $form->disableEditingCheck();
  66. $form->disableViewCheck();
  67. $form->multipleFile('lists', '剧集')
  68. ->chunkSize(1024)
  69. ->maxSize(1024 * 1024)
  70. ->saveFullUrl()
  71. ->uniqueName()
  72. ->autoUpload()
  73. ->autoSave(false)
  74. ->removable(false)
  75. ->required();
  76. $form->saved(function (Form $form) use ($id) {
  77. return $form
  78. ->response()
  79. ->success(trans('admin.update_succeeded'))
  80. ->redirect(admin_url("/episodes/{$id}/lists"));
  81. });
  82. });
  83. }
  84. }