Laravel Backpack使用upload_multiple时报参数不足错误求助
解决Backpack CRUD upload_multiple参数错误问题
问题场景
使用单文件上传字段时功能正常:
CRUD::field('photos')->type('upload')->withFiles(['path' => 'productphotos']);
但改为多文件上传字段后,提交时触发错误:
Too few arguments to function Backpack\CRUD\app\Library\Uploaders\Uploader::getPreviousFiles(), 0 passed in vendor/backpack/crud/src/app/Library/Uploaders/MultipleFiles.php on line 22 and exactly 1 expected
环境版本
### BACKPACK PACKAGE VERSIONS: backpack/basset: 1.0.0 backpack/crud: 6.0.4 backpack/generators: v4.0.0 backpack/permissionmanager: 7.0.0 backpack/theme-coreuiv2: 1.1.3
Product模型代码
<?php namespace App\Models; use Backpack\CRUD\app\Models\Traits\CrudTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Product extends Model { use CrudTrait; use HasFactory; protected $fillable = [ 'category_id', 'price', 'weight', 'quantity', 'stock_control', 'notes', 'age_restricted', 'sale_item', 'active', 'list_index', 'photos' ]; public function category() : BelongsTo { return $this->belongsTo(Category::class); } }
解决步骤
修正数据库字段类型
将products表中的photos字段类型改为json(或text,推荐使用json),因为多文件上传需要存储路径数组。添加字段类型转换
在Product模型中新增$casts属性,让Laravel自动将photos字段转换为数组:protected $casts = [ 'photos' => 'array', ];完善字段配置
补充withFiles中的磁盘配置(以公共磁盘为例):CRUD::field('photos')->type('upload_multiple')->withFiles([ 'disk' => 'public', 'path' => 'productphotos' ]);升级Backpack CRUD版本
该错误属于Backpack CRUD 6.0.4版本的已知bug,升级到最新6.x版本可直接修复:composer update backpack/crud
内容的提问来源于stack exchange,提问作者idontunderstandanything
相关产品推荐
相关产品推荐

