jqhph / dcat-admin

🔥 基于 Laravel 的后台系统构建工具 (Laravel Admin),使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码
http://www.dcatadmin.com
MIT License
3.87k stars 704 forks source link

分步表单嵌套图片上传无法正常上传 #800

Open ZealousLyon opened 3 years ago

ZealousLyon commented 3 years ago

Description:

分步表单嵌套图片上传无法正常上传,提交上传后返回的是分布表单的最后完成页; 1.7版本使用的是->add('****', function(Form\StepForm $step),但是升级到2.0.*之后一直报Argument 1 passed to App\Admin\Controllers\SolutionController::App\Admin\Controllers\{closure}() must be an instance of Dcat\Admin\Form\StepForm, instance of Dcat\Admin\FormStep\Form given,替换成\Dcat\Admin\FormStep\Form之后正常打开,在上传图片时虽然使用了->autoSave(false)但会向数据库插入一条空白记录并且图片没有走正常上传流程

Steps To Reproduce:

代码如下: `

$form->multipleSteps()
    ->remember()
    ->width('950px')
    ->add('基本信息', function(\Dcat\Admin\FormStep\Form $step) {
        $step->text('title')->required();
        $step->select('cate_id')->options(function() {
            return SolutionCate::pluck('cate_name', 'id');
        })->required();
        $step->radio('status')->options([0 => '未启用', 1 => '已启用'])->default(0);
        $step->image('background')->disk('qiniu')->move('solution/images/background')->uniqueName()->saveFullUrl()->retainable()->removeable(false)->autoSave(false)->help('背景图可以为空');
    })->add('背景概述', function(\Dcat\Admin\FormStep\Form $step) {
        $step->textarea('overview_desc')->required();
        $step->image('overview_image')->disk('qiniu')->move('solution/images/overview')->uniqueName()->saveFullUrl()->retainable()->removeable(false)->autoSave(false);
    })->add('方案概述', function(\Dcat\Admin\FormStep\Form $step) {
        $step->textarea('solution_desc')->required();
        $step->image('solution_image')->disk('qiniu')->move('solution/images/solution')->uniqueName()->saveFullUrl()->retainable()->removeable(false)->autoSave(false);
    })->add('核心优势', function(\Dcat\Admin\FormStep\Form $step) {
        $step->hasMany('advantages', '核心优势', function(Form\NestedForm $form) {
            $form->text('name', '优势名称');
            $form->textarea('desc', '优势描述');
            $form->image('image', '优势图片')->disk('qiniu')->move('solution/images/advantages')->uniqueName()->saveFullUrl()->retainable()->removeable(false)->autoSave(false);
            $form->number('sort')->placeholder('值默认为0')->help('值越大越靠前')->default(0);
        });
    })->add('应用场景', function(\Dcat\Admin\FormStep\Form $step) {
        $step->hasMany('scenes', '应用场景', function(Form\NestedForm $form) {
            $form->text('name', '场景名称');
            $form->image('image', '场景图片')->disk('qiniu')->move('solution/images/scenes')->uniqueName()->saveFullUrl()->retainable()->removeable(false)->autoSave(false);
            $form->number('sort')->placeholder('值默认为0')->help('值越大越靠前')->default(0);
        });
    })->done(function() use ($form) {
        $resource = $form->getResource(0);
        $data = [
            'title'       => '操作成功',
            'description' => '',
            'createUrl'   => $resource,
            'backUrl'     => $resource,
        ];
        return view('dcat-admin.form-step::completion-page', $data);
        });

`

jqhph commented 3 years ago

是主表的图片上传有问题还是hasMany的图片上传有问题?

ZealousLyon commented 3 years ago

是主表的图片上传有问题还是hasMany的图片上传有问题?

目前我这边测试的是主表和关联表的图片上传均返回分布表单的最后完成页

jqhph commented 3 years ago

需要在step外面也加上对应的图片上传字段

$form->image(xxx);
$form->hasMany(...)
ZealousLyon commented 3 years ago

需要在step外面也加上对应的图片上传字段

$form->image(xxx);
$form->hasMany(...)

可用,谢谢!主表只需复制图片字段,hasMany的需要全部复制,否则其他字段会保存不上; 另外保存完跳转回列表页会提示Field type [getResource] does not exist.

jqhph commented 3 years ago

你的分步表单代码是最新的吗?

ZealousLyon commented 3 years ago

你的分步表单代码是最新的吗?

是的,直接从仓库下的zip包

zhaoshl commented 3 years ago

是主表的图片上传有问题还是hasMany的图片上传有问题?

遇到了同样的问题,升级到2.0.11版本后发现主表和hasMany的图片上传(image)使用autoUpload都出现"The......must be an image."错误提示,盼解决! image

jqhph commented 3 years ago

是主表的图片上传有问题还是hasMany的图片上传有问题?

遇到了同样的问题,升级到2.0.11版本后发现主表和hasMany的图片上传(image)使用autoUpload都出现"The......must be an image."错误提示,盼解决! image

说明你的表单事件回调有问题,楼上说的跟你这个不是同个问题