Error:While updating form Using Ajax Post method in laravel
Error:While updating form Using Ajax Post method in laravel
我正在尝试更新我的 Laravel 表单 在更新 file
字段以外的其他字段时 Laravel 我正在使用 hasfile()
检查它,但它失败了。
如果我更新文件上传条件完美工作,唯一的问题发生在我更新其他表单字段而不更新文件时
这是我的控制器页面:
public function update(Request $request, $id)
{
$this->validate($request,[
'design_no'=>'required',
'design_image'=>'image|nullable|max:1999'
]);
// Handle file Upload
if ($request->hasFile('design_image')) {
// Get filename with image
$filenameWithex=$request->file('design_image');
// Get just file name
$filename=$_FILES['design_image']['name'];
// $filename=pathinfo($filenameWithex,PATHINFO_FILENAME);
// Get just ex
// $extension=pathinfo($filenameWithex,PATHINFO_EXTENSION);
// File Name To Store
$fileNameToStore=$filename;
$path=$request->file('design_image')->storeAs('public/images',$fileNameToStore);
}else{
$fileNameToStore='noimage.jpg';
}
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> $fileNameToStore,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
$design->save();
return '1';
}
这是我的 Ajax 电话:
$('.submit').click(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var form = $('form')[0];
var update = new FormData(form);
var id =$('.designNo').val();
$.ajax({
type:"POST",
url:"/design_update/"+id,
processData: false, // Important!
contentType: false,
cache: false,
data:update,
success:function(results){
if (results==1) {
$("#result").html("Upadated Successfully");
}else{
$('#error').html(results);
}
}
});
});
首先你需要像这样验证你的文件
$this->validate($request,[
'design_no'=>'required',
'design_image'=>'nullable|image|mimes:jpg,png,jpeg|max:1999'
]);
然后你需要获取你正在更新的记录,如果你已经有那些记录然后忽略这一步。
$designData = design::where('design_no',$id)->first();
现在你需要检查你的变量 $fileNameToStore
如果它有 noImage.jpg
意味着你没有在这里更新图像,在这种情况下你需要更新保持你最后上传的文件完好无损否则更新你的图像文件是这样的。
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> ($fileNameToStore != 'noimage.jpg') ? $fileNameToStore : $designData->design_image,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
替代方法
你也可以在这里做两个更新语句,这样保持干净
if ($request->hasFile('design_image')) {
// Get filename with image
$filenameWithex=$request->file('design_image');
// Get just file name
$filename=$_FILES['design_image']['name'];
// $filename=pathinfo($filenameWithex,PATHINFO_FILENAME);
// Get just ex
// $extension=pathinfo($filenameWithex,PATHINFO_EXTENSION);
// File Name To Store
$fileNameToStore=$filename;
$path=$request->file('design_image')->storeAs('public/images',$fileNameToStore);
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> $fileNameToStore,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
}else{ // ignore design_image when you don't need to update that
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
}
我正在尝试更新我的 Laravel 表单 在更新 file
字段以外的其他字段时 Laravel 我正在使用 hasfile()
检查它,但它失败了。
如果我更新文件上传条件完美工作,唯一的问题发生在我更新其他表单字段而不更新文件时
这是我的控制器页面:
public function update(Request $request, $id)
{
$this->validate($request,[
'design_no'=>'required',
'design_image'=>'image|nullable|max:1999'
]);
// Handle file Upload
if ($request->hasFile('design_image')) {
// Get filename with image
$filenameWithex=$request->file('design_image');
// Get just file name
$filename=$_FILES['design_image']['name'];
// $filename=pathinfo($filenameWithex,PATHINFO_FILENAME);
// Get just ex
// $extension=pathinfo($filenameWithex,PATHINFO_EXTENSION);
// File Name To Store
$fileNameToStore=$filename;
$path=$request->file('design_image')->storeAs('public/images',$fileNameToStore);
}else{
$fileNameToStore='noimage.jpg';
}
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> $fileNameToStore,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
$design->save();
return '1';
}
这是我的 Ajax 电话:
$('.submit').click(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var form = $('form')[0];
var update = new FormData(form);
var id =$('.designNo').val();
$.ajax({
type:"POST",
url:"/design_update/"+id,
processData: false, // Important!
contentType: false,
cache: false,
data:update,
success:function(results){
if (results==1) {
$("#result").html("Upadated Successfully");
}else{
$('#error').html(results);
}
}
});
});
首先你需要像这样验证你的文件
$this->validate($request,[
'design_no'=>'required',
'design_image'=>'nullable|image|mimes:jpg,png,jpeg|max:1999'
]);
然后你需要获取你正在更新的记录,如果你已经有那些记录然后忽略这一步。
$designData = design::where('design_no',$id)->first();
现在你需要检查你的变量 $fileNameToStore
如果它有 noImage.jpg
意味着你没有在这里更新图像,在这种情况下你需要更新保持你最后上传的文件完好无损否则更新你的图像文件是这样的。
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> ($fileNameToStore != 'noimage.jpg') ? $fileNameToStore : $designData->design_image,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
替代方法
你也可以在这里做两个更新语句,这样保持干净
if ($request->hasFile('design_image')) {
// Get filename with image
$filenameWithex=$request->file('design_image');
// Get just file name
$filename=$_FILES['design_image']['name'];
// $filename=pathinfo($filenameWithex,PATHINFO_FILENAME);
// Get just ex
// $extension=pathinfo($filenameWithex,PATHINFO_EXTENSION);
// File Name To Store
$fileNameToStore=$filename;
$path=$request->file('design_image')->storeAs('public/images',$fileNameToStore);
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'design_image'=> $fileNameToStore,
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
}else{ // ignore design_image when you don't need to update that
design::where('design_no',$id)->update([
'desg_1' => $request->input('desg_1'),
'desg_2' => $request->input('desg_2'),
'desg_3' => $request->input('desg_3'),
'desg_4' => $request->input('desg_4'),
'desg_5' => $request->input('desg_5'),
'desg_6' => $request->input('desg_6')
]);
}