Laravel 8.26.0 版本及以上,在路由模組新增了一個 missing()
方法,我們在實際開發中,經常使用路由隱形繫結自動查詢對應的資料,減少在 Controller 中自己編寫程式碼。
在之前,如果模型沒有查到對應的資料,會自動跳轉到全域性統一的 404 頁面,不夠靈活。而 missing()
方法就是為了解決這個問題而來的。
Route::get('/users/{user:slug}', [UserController::class, 'show'])
->name('user.view')
->missing(function (Request $request) {
return Redirect::route('user.index');
});
當請求 missing.test/users/dalian 時,如果在使用者表中查不到 slug 為 dalian 的資料,會跳轉到使用者列表的首頁,而不是統一的 404 頁面。
注意:
該方法只適用於路由的隱形繫結才會有效,例如在 Controller 中使用findOrFail
方法,即使未查到指定的資料,也不會出發missing
方法,而是會跳轉到統一的 404 頁面。
本作品採用《CC 協議》,轉載必須註明作者和本文連結