service = new FileService(); } /** * 列表页面 * * @return Grid */ protected function grid() { return Grid::make(new FileFile(), function (Grid $grid) { $helper = new GridHelper($grid, $this); $helper->columnId(); $helper->columnFilePath(); $helper->columnFileOriginalName(); $helper->columnFileSize(); $helper->columnFileType(); $helper->columnFileStatus(); $helper->columnFileVisibility(); $helper->columnRelationType(); $helper->columnRelationId(); $helper->columnFilePreview(); $helper->columnCreatedAt(); $helper->columnUpdatedAt(); // 添加下载按钮 $grid->column('download', '操作')->display(function () { $url = $this->service->getFileUrl($this->id); return "下载"; })->unescape(); // 筛选器 $grid->filter(function (Grid\Filter $filter) { $helper = new FilterHelper($filter, $this); $helper->equalFileId(); $helper->likeFilePath(); $helper->likeFileOriginalName(); $helper->equalFileType(); $helper->equalFileStatus(); $helper->equalFileVisibility(); $helper->equalRelationType(); $helper->equalRelationId(); $helper->equalUserId(); $helper->betweenCreatedAt(); }); }); } /** * 详情页面 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new FileFile(), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->fieldId(); $helper->fieldFilePath(); $helper->fieldFileOriginalName(); $helper->fieldFileSize(); $helper->fieldFileType(); $helper->fieldFileStatus(); $helper->fieldFileVisibility(); $helper->fieldRelationType(); $helper->fieldRelationId(); $helper->fieldFilePreview(); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); // 添加下载按钮 $show->html(function () use ($show) { $url = $this->service->getFileUrl($this->id); return "下载文件"; }); }); } /** * 表单页面 * * @return Form */ protected function form() { return Form::make(new FileFile(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id'); // 文件上传 $helper->fileUpload(); // 文件属性 $helper->radioFileVisibility(); $helper->radioFileStatus(); $helper->textRelationType(); $helper->numberRelationId(); $helper->numberUserId(); $form->display('created_at'); $form->display('updated_at'); // 保存前回调 $form->saving(function (Form $form) { // 如果是新建文件,则使用文件服务上传 if ($form->isCreating()) { $file = $form->file; if ($file) { $userId = $form->user_id ?: 0; $reType = $form->re_type ?: ''; $reId = $form->re_id ?: 0; // 使用文件服务上传文件 $fileModel = $this->service->uploadFile($file, $userId, $reType, $reId); // 将文件模型的属性赋值给表单 $form->path = $fileModel->path; $form->o_name = $fileModel->o_name; $form->fsize = $fileModel->fsize; $form->type1 = $fileModel->type1; } } }); }); } }