我试图将id传递给控制器中的一个函数以删除该行,但我得到了错误代码:
传递的函数0的参数太少,正好需要1
这是我的html代码:
<a href="{{ route('undo', $id) }}">Undo</a>
这是我的路线:
Route::get('/admin', [ProductController::class, 'deleteProduct']) -> name('undo');
这是我的控制器代码:
function deleteProduct($id) {
DB::table('products') -> where('id', '=', $id) -> delete();
return view('auth.admin');
}
您没有在路由中定义id
:
Route::get('/admin/{id}', [ProductController::class, 'deleteProduct']) -> name('undo');
通过这种方式,route
调用将知道将id
放在哪里,并将其发送给函数。
另一种方法是保留路由,但从控制器函数定义中删除$id
,并添加Request $request
以使laravel对象成为请求对象。然后在函数内部从请求对象访问$id
:
$id = $request->input('id');