Open devzzk opened 1 year ago
$form->hasMany('images', 'images', function (\Encore\Admin\Form\NestedForm $form) { $form->multipleImage('images_path', 'images')->removable(); });
多图上传 删除失败 临时解决方案:
namespace App\Admin\Extensions\Form\Field; use Encore\Admin\Form; class MultipleImage extends \Encore\Admin\Form\Field\MultipleImage { /** * Set default options form image field. * * @return void */ protected function setupDefaultOptions() { $defaults = [ 'overwriteInitial' => false, 'initialPreviewAsData' => true, 'msgPlaceholder' => trans('admin.choose_file'), 'browseLabel' => trans('admin.browse'), 'cancelLabel' => trans('admin.cancel'), 'showRemove' => false, 'showUpload' => false, 'showCancel' => false, 'dropZoneEnabled' => false, 'deleteExtraData' => [ $this->formatName($this->column) => static::FILE_DELETE_FLAG, static::FILE_DELETE_FLAG => '', '_token' => csrf_token(), '_method' => 'PUT', '_uu_key' => $this->getErrorKey(), // 重点是这个 key, 可以在http 请求时带上 // $this->getErrorKey() => images.{id}.images_path ], ]; if ($this->form instanceof Form) { $defaults['deleteUrl'] = $this->form->resource().'/'.$this->form->model()->getKey(); } $defaults = array_merge($defaults, ['fileActionSettings' => $this->fileActionSettings]); $this->options($defaults); } }
\Encore\Admin\Form::forget(['multipleImage']); \Encore\Admin\Form::extend('multipleImage', App\Admin\Extensions\Form\Field\MultipleImage::class);
$form->saved(function (Form $form) { if (request()->wantsJson() && request()->has(Field::FILE_DELETE_FLAG)) { $key = $form->input(\Encore\Admin\Form\Field::FILE_DELETE_FLAG); // 获取需要删除的键值 $id = explode('.', $form->input('uu_key'))[1]; // 获取需要删除的数据的id $image = Model::find($id); $images = $image->images_path; unset($images[$key]); $image->images_path = $images; $image->save(); return resonse(); } });
希望有所帮助
Description:
多图上传 删除失败 临时解决方案:
Steps To Reproduce:
bootstrap.php
Controller.php