【发布时间】:2021-05-18 11:58:59
【问题描述】:
我的小问题是,如果我点击编辑页面上的安全按钮,Laravel 不会触发更新功能。点击保存后唯一发生的事情是页面被重新加载。
这是我的小sn-p代码:
edit.blade sn-p:
<form method="POST" action="{{ route('t_update', $transport->id) }}" enctype="multipart/form-data">
@csrf
<section id="user">
<div class="container-fluid">
<div class="card card-default">
<div class="card-header" data-card-widget="collapse">
<h3 class="card-title">User</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i></button>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3">
<div class="form-group">
...
</div>
</section>
<section class="options">
<div class="row">
<div class="col-md-6 text-right">
<a class="btn btn-danger" href="{{ route('home') }}">
<i class="fas fa-times">
</i>
Cancel
</a>
</div>
<div class="col-md-2">
<button class="btn btn-success" type="submit" name="save">
<i class="fas fa-plus">
</i>
Save
</button>
</div>
</div>
</section>
</form>
web.php
Route::get('/home/create', [App\Http\Controllers\MainController::class, 'create'])->name('t_create');
Route::post('/home/create', [App\Http\Controllers\MainController::class, 'store'])->name('t_save');
Route::get('/home/edit/{id}', [App\Http\Controllers\MainController::class, 'edit'])->name('t_edit');
Route::post('/home/edit/{id}', [App\Http\Controllers\MainController::class, 'update'])->name('t_update');
MainController(更新函数sn-p):
public function update(Request $request, $id)
{
$this->validate($request, [
'firstname' => 'required',
'lastname' => 'required',
...
]);
Transport::find($id)
->update([
'firstname' => $input['firstname'],
'lastname' => $input['lastname'],
...
]);
return redirect()->route('home')
->with('success','Data was successfully updated.');
}
【问题讨论】:
-
可能您遇到了未打印的验证错误
-
检查表单标签中的 action 属性?
-
另一方面,您将
POSTHTTP 动词用于执行更新操作的方法。这应该是PUT或PATCH。
标签: php laravel laravel-8 php-7.4