[英]422 Unprocessable Entity with Laravel 8 delete route
我有一個帶有以下代碼的常見 Larvel 8 項目:
在routes/api.php文件中:
Route::resources([
'menu/menu' => Menu\MenuController::class,
]);
在app/Http/Controllers/Menu/MenuController.php文件中:
public function destroy(DestroyMenuRequest $request, Menu $menu) {
$menu->delete();
return Response::HTTP_OK;
}
在DestroyMenuRequest.php文件中:
class DestroyMenuRequest extends FormRequest {
public function authorize() {
return $this->user()->can('destroy.menu');
}
public function rules() {
return [
'id' => 'required|integer|exists:menus,id',
];
}
}
然后我向 url {{domain}}/api/menu/menu/2
發送一個DELETE
HTTP 請求,然后我得到這個:
在標題 422(不可處理的條目)和正文中:
{
"message": "The given data was invalid.",
"errors": {
"id": [
"The id field is required."
]
}
}
如果我使用php artisan r:l
列出路由,我會看到帶有正確控制器的路由:
DELETE | api/menu/menu/{menu} | menu.destroy | App\Http\Controllers\Menu\MenuController@destroy | api auth:api
知道解決方案是什么嗎?
謝謝!
正如我上面的評論指出的那樣,您正在為資源控制器生成路由。
在您的路由列表中,您可以看到該路由不希望將實際 ID 作為參數,而是希望 Laravel 自動從中獲取 ID 的Menu
模型實例。
例如,如果您正在提交表單:
<form method="POST" action="{{ route('menu.destroy', ['menu' => $menuObject]) }}">
@method("DELETE")
...
</form>
其中$menuObject
的類型為Models\\Menu
。 換句話說,它是您創建的Menu
模型的一個實例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.