Vue.js 更新laravel 8中的图像将清除表单中的其余数据
我正在从事一个Laravel8项目,当我尝试更新一个图像时,我使用Vue和惯性,它会清除表单中的其余数据。但是如果我在不更新图像的情况下更新表单,效果会很好。我可以用一个图像创建一个新的记录,我发现只有当我尝试更新图像时,这种情况才会发生 输入字段如下所示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]">
<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 }
}
}