【0=>图片1,1=>图片2,2=>图片3,3=>图片4】 当删除 1=>图片2 时,成功,数据库里的图片已经变为【0=>图片1,1=>图片3,2=>图片4】 之后再删除 图片3 时,发送的key为2,而此时下标2对应的图片已经变为了图片4,将导致图片4被删除
我也遇到了这种问题
同问~
修复多图删除问题
1:下标和传参改为图片全名
vendor/encore/laravel-admin/src/Form/Field/MultipleFile.php
protected function initialPreviewConfig()
{
$files = $this->value ?: [];
$config = [];
foreach ($files as $index => $file) {
$config[] = [
'caption' => basename($file),
'key' => $file, //这里变成图片名 不使用下标
];
}
return $config;
}
1:删除处理
public function destroy($key)
{
$files = $this->original ?: [];
if ($this->storage->exists($key)) {
$this->storage->delete($key);
}
$files = array_merge(array_diff($files, array($key)));
return array_values($files?:[]);
}
我的图片名是唯一的,不唯一的多图没有测试 @z-song
在测试图片删除的时候也发现了这个问题
同样因为下标错误导致删除图片错误
Laravel-admin: 1.6.7
@SuzutsukiKagami 按我的修改就可以
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
MediaModel::where("card_id", $id)->pluck("image_url",'id')->toArray();
我是将上面的值赋值给了Form的images 这个字段,,,中间的就不写了
这样传参数进入
$form->multipleImage("images", "图片(最多50张,建议图片比例1:1)")->options([
'maxFileCount' => 50,
'language' => 'zh'
])->removable();;
这样皆可以解决vendor 包中的这个 MultipleFile的问题
/**
* @return array
*/
protected function initialPreviewConfig()
{
$files = $this->value ?: [];
$config = [];
foreach ($files as $index => $file) {
$preview = array_merge([
'caption' => basename($file),
'key' => $index,
], $this->guessPreviewType($file));
$config[] = $preview;
}
return $config;
}
传过来的参数
array:5 [▼
"key" => "49"
"images" => "_file_del_"
"_file_del_" => null
"_token" => "NhkGtLtao8sd7JWuK8Tmg2K3LyxPIfpbHlVm1lYl"
"_method" => "PUT"
]
key是我的id
Most helpful comment
修复多图删除问题
1:下标和传参改为图片全名
vendor/encore/laravel-admin/src/Form/Field/MultipleFile.php
1:删除处理
我的图片名是唯一的,不唯一的多图没有测试 @z-song