多图上传,编辑的时候提示图片不能为空?

给商品增加多图展示,字段为 images,字段类型为 JSON

在模型中定义了字段属性:

protected $casts = [
    'images' => 'array',
    'on_sale' => 'boolean',
];

在商品控制中定义多图表单:

$form->multipleImage('images', '展示图片')
            ->rules('required')
            ->uniqueName()
            ->removable();

新增商品时,图片上传无误,但是编辑的时候点击提交按钮,提示 图片不能为空

多图上传,编辑的时候提示图片不能为空?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 17

是不是设置的上传图片路径有问题

4年前 评论

@sunnylin 路径没问题,数据库有值

4年前 评论

1、配置的图片存放地址是否正确
2、前端是否检测到图片存在

4年前 评论

@sunnylin 哥 这两项不正确图片不会显示的吧

4年前 评论

file
按你的代码,出现这个错误,怀疑是字段设置的问题,可以试一试 json 格式

4年前 评论

@sunnylin images 字段在数据库的类型是 JSON,在模型里面把类型转换成了 Array

file

Models\Product.php

protected $casts = [
      'images' => 'array',
];
4年前 评论

file
如果再添加一个图片就不会报你的错误,怀疑是产品控制器的 detail 没有解析正确

4年前 评论

@sunnylin

不是,是这样的,Product 表有两个字段,一个是 cover(封面),一个是 images(展示图片)

file

报错是在编辑提交的时候报错,跟 detail() 没关系

4年前 评论

知道是编辑提交时报的错,将规则改为下面这样

file

4年前 评论

@sunnylin 改成这样不符合逻辑啊,要的是不能为空,不能用 nullable

4年前 评论

编辑的时候是什么意思?

file

4年前 评论

@pugOreo 就是提交更新的时候返回了错误

4年前 评论
pardon110

@xiaocao laravel-admin 1.6+ 有图片显示,未对图片进行编辑,提交编辑更新,报错 图片为空。原因在于,编辑状态,admin假定新增时的图片值为默认底图,而底图就是你看到的图片显示。在编辑状态 ,对于图片这种类似文件类型的表单input元素,如果没有添入图片(或换图),无论是单图,还是多图在编辑后提交 ,会使用上传文件对象(即编辑时没传图片没此对象,就报错)验证规则。因此,如果不想每次编辑状态,在有图情况下,未改图,却报图片为空。你可以这样做

       $form->image('image', '封面图片')->rules(function($form){
            if(!$id=$form->model()->id) {
                return 'required|image';
            }
        });
4年前 评论

@pardon110 这么做的话,如果编辑时把图片全部删除了,不上传图片也能通过,那与原本逻辑不符,图片字段不可为空的话,数据库还是会报错的

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!