所以,我有一个模态形式。对于插入功能,使用常规形式即可工作。 但在模态形式的更新函数中,方案运行并出现更新成功的警报,但没有发生任何变化。
这是带有按钮的模态调用
<button type="button" class="btn btn-warning" data-toggle="modal" data-target="#editsop{{$data->id_sop}}"><i class="fa fa-pencil"></i></button>
这是我的模态形式
@foreach ($sop as $data)
<div class="modal fade" id="editsop{{$data->id_sop}}">
<div class="modal-dialog modal-lg-6">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="editsopModal">Update SOP</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="/sop/update/{id_sop}" method="POST" enctype="multipart/form-data">
@csrf
<div class="content">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<input name="sop" type="text" class="form-control @error('sop') is-invalid @enderror" value="{{ $data->sop }}">
<div class="invalid-feedback">
@error('sop')
{{ $message }}
@enderror
</div>
</div>
<div class="form-group">
<div class="div-col-sm-6">
<img src="{{ url('foto_sop/'.$data->file_sop) }}" width="100px">
</div>
<input name="file_sop" type="file" class="form-control @error('file_sop') is-invalid @enderror" value="{{ $data->file_sop }}">
<div class="invalid-feedback">
@error('file_sop')
{{ $message }}
@enderror
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Update</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endforeach
我的更新控制器
public function update($id_sop)
{
Request()->validate(
[
'file_sop' => 'mimes:pdf,jpg,jpeg,bmp,png,mp4|max:100000'
],
[
'file_sop.mimes' => 'Extension File Harus .pdf, .jpg, .jpeg, .bmp, .png, atau .mp4',
'file_sop.max' => 'Maximal ukuran file 100 MB'
]
);
//jika ingin ganti berkas
if (Request()->file_sop <> "") {
//upload gambar/foto
$file = Request()->file_sop;
$fileName = Request()->sop . '.' . $file->extension(); //rename nama berdasarkan nama file_sop
$file->move(public_path('file_sop'), $fileName);
$data = [
'sop' => Request()->sop,
'file_sop' => $fileName,
'created_at' => Request()->created_at,
'updated_at' => Request()->updated_at
];
$this->SopModel->editData($id_sop, $data);
} else {
$data = [
'sop' => Request()->sop,
'created_at' => Request()->created_at,
'updated_at' => Request()->updated_at
];
$this->SopModel->editData($id_sop, $data);
}
return redirect()->route('sop')->with('pesan', 'Data Berhasil Di Update !!!');
}
这是我的更新模式
public function editData($id_sop, $data)
{
DB::table('sop')
->where('id_sop', $id_sop)
->update($data);
}
最后这是路线更新
Route::post('/sop/update/{id_sop}', [App\Http\Controllers\SOPController::class, 'update']);
那么,我认为我的错误在哪里,我尝试了一晚上,但仍然没有找到问题所在,谢谢
您没有正确地将
id_sop
传递给更新函数。在表单操作中,您使用了占位符 {id_sop}
,但没有将其替换为实际的 id_sop
值。
<form action="/sop/update/{{$data->id_sop}}" method="POST" enctype="multipart/form-data">
这样,
id_sop
将正确传递到控制器中的更新函数。
此外,在更新函数中,您使用
Request()
来获取请求数据。但是,您应该在函数定义中使用 request
参数来获取请求数据。以下是您应该如何定义更新函数:
public function update(Request $request, $id_sop)
然后,您可以使用
$request
代替 Request()
来获取请求数据:
if ($request->file_sop <> "") {
// your code here
}