Laravel-admin 中 $form->table 图片上传时的 bug 问题
问题说明:$form->table 图片上传后,再次编辑并提交后,会丢失图片数据
具体如下:
使用的是laravel-admin的JSON组件
问题代码存在与下面的$form->table
中
protected function form()
{
$form = new Form(new Good());
……
$form->table('size', function ($table) {
$table->text('sizes', __('规格大小'));
$table->text('colors', __('颜色分类'));
$table->text('sales', __('价格'));
$table->text('sizecostprice', __('成本价格'));
$table->text('sizestock', __('库存'));
$table->image('sizeimg', __('图片'));
});
……
}
前端展示界面如下:
加上上面代码后,前台界面显示、上传图片操作、确认提交等操作都正常;
添加完成后,再次编辑该数据,也可以正常显示;
问题在于,在编辑页面,不做任何改动直接提交后,$table->image('sizeimg', __('图片'));
的数据丢失了!
尝试查找原因
分别在新增和编辑时,打印$form数据,结果显示
新增时:
编辑后提交(不做任何改动,如果编辑时重新上传图片,还是可以正常存储到数据库的):
可以看到,新增时,sizeimg是存在的,是一个文件对象;编辑提交后,sizeimg丢失了
发现编辑时sizeimg不存在的问题后,考虑到是不是编辑时没有加载该参数input元素,所以又到前台编辑页面去查找,结果发现是有的,如下图:
可以看到,sizeimg跟其他的$table->text()
的字段都是同样存在的,但是不明白为什么在提交后会丢失
至此,个人能想到的是,应该是laravel-admin的 $form->table()
方法不能很好地支持$table->image()
方法,导致的这个问题
希望路过的高手,能够帮忙想出解决办法,谢谢!
在Good模型中加入: