Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 更新laravel 8中的图像将清除表单中的其余数据_Vue.js_Laravel 8_Inertiajs - Fatal编程技术网

Vue.js 更新laravel 8中的图像将清除表单中的其余数据

Vue.js 更新laravel 8中的图像将清除表单中的其余数据,vue.js,laravel-8,inertiajs,Vue.js,Laravel 8,Inertiajs,我正在从事一个Laravel8项目,当我尝试更新一个图像时,我使用Vue和惯性,它会清除表单中的其余数据。但是如果我在不更新图像的情况下更新表单,效果会很好。我可以用一个图像创建一个新的记录,我发现只有当我尝试更新图像时,这种情况才会发生 输入字段如下所示 <input type="file" class="h-full w-full" @input="form.image = $event.target.files[0]">

我正在从事一个Laravel8项目,当我尝试更新一个图像时,我使用Vue和惯性,它会清除表单中的其余数据。但是如果我在不更新图像的情况下更新表单,效果会很好。我可以用一个图像创建一个新的记录,我发现只有当我尝试更新图像时,这种情况才会发生

输入字段如下所示

<input type="file" class="h-full w-full" @input="form.image = $event.target.files[0]">
下面是我在控制器中的更新方法

public function update(UpdateProductRequest $request, Product $product)
    {
        if ($request->hasFile('image')){
            $file = $request->file('image');
            $image = Image::make($file);
            $path = storage_path().DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'public'.DIRECTORY_SEPARATOR.'products'.DIRECTORY_SEPARATOR;
            $file_name = time().'_'.$file->getClientOriginalName();
            if ($image->height() == $image->width() && $image->height() > 1080) {
                $image->resize(1080, 1080);
                $image->save($path.$file_name);
            } else {
                $blur = Image::make($file)->fit(1080, 1080)->blur(20);
                $image->resize(1080, 1080, function ($c) {
                    $c->aspectRatio();
                    $c->upsize();
                });

                $blur->insert($image, 'center');
                $blur->save($path.$file_name);
            }

            $product->image = 'products'.DIRECTORY_SEPARATOR.$file_name;
        }

        $product->name = $request->name;
        $product->product_type_id = $request->product_type_id;
        $product->url = $request->url;
        $product->status_id = $request->status_id;
        $product->save();

        return Redirect::route('product.index');
    }
我甚至试过这个

import {useForm} from "@inertiajs/inertia-vue3";
export default {
    name: "Create",
    props:{
        errors: Object,
        product: Object,
        productTypes: Object,
    },
    setup (props) {
        const form = useForm({
            name: props.product.name,
            image: props.product.image,
            url: props.product.url,
            product_type_id: props.product.product_type_id,
            status_id: props.product.status_id
        })
        function submit() {
            form.patch('/product/'+props.product.id)
        }
        return { form, submit }
    }
}

当我提交表单时,验证失败,说明名称、产品类型、url和状态id是必需的,即使我没有更改它们,我只是更改了图像

请与我们分享您尝试过的内容和代码。@KevinYobeth我已更新了我的帖子
import {useForm} from "@inertiajs/inertia-vue3";
export default {
    name: "Create",
    props:{
        errors: Object,
        product: Object,
        productTypes: Object,
    },
    setup (props) {
        const form = useForm({
            name: props.product.name,
            image: props.product.image,
            url: props.product.url,
            product_type_id: props.product.product_type_id,
            status_id: props.product.status_id
        })
        function submit() {
            form.patch('/product/'+props.product.id)
        }
        return { form, submit }
    }
}