【发布时间】:2020-04-07 03:06:50
【问题描述】:
我有一个编辑表单,其中有一个图像字段,用户可以在其中上传新图像,如果他愿意的话。
但如果用户不上传新照片,我不想验证图像字段,而只是使用数据库中已经存在的照片。并且根本不更新图像字段。
这是我的编辑功能:
public function postEdit($id) {
$product = Product::find($id);
// This should be in product model, just testing here
$edit_rules = array(
'category_id' => 'required|integer',
'title' => 'required|min:2',
'description' => 'required|min:10',
'price' => 'required|numeric',
'stock' => 'integer'
);
// Add image rule only if user uploaded new image
if (Input::has('image')) {
$edit_rules['image'] = 'required|image|mimes:jpeg,jpg,bmp,png,gif';
}
$v = Validator::make(Input::all(), $edit_rules);
if ($product) {
if ($v->fails()) {
return Redirect::back()->withErrors($v);
}
// Upload the new image
if (Input::has('image')) {
// Delete old image
File::delete('public/'.$product->image);
// Image edit
$image = Input::file('image');
$filename = date('Y-m-d-H:i:s')."-".$image->getClientOriginalName();
Image::make($image->getRealPath())->resize(600, 600)->save('public/img/products/'.$filename);
$product->image = 'img/products/'.$filename;
$product->save();
}
// Except image because already called save if image was present, above
$product->update(Input::except('image'));
return Redirect::to('admin/products')->with('message', 'Product updated.');
}
return Redirect::to('admin/products');
}
使用它我可以更新除图像之外的所有值。
如果我不上传新照片,它会保存所有其他更新的值。
如果我确实上传了一张新照片,它只会忽略它并保存所有其他更新的值,不会上传新照片。
【问题讨论】:
-
您是否尝试将
$product->update(...);放在else 子句中? -
刚刚试过。它没有工作..
-
你确定 Laravel 得到了图像吗?您的文件输入名称是否正确?您的表单 ecntype 是否设置为
multipart/form-data? -
谢谢..它的作品..