下面由laravel教程欄目給大家介紹Laravel 8 路由模塊新增的 missing 方法,希望對(duì)需要的朋友有所幫助!
Laravel 8.26.0 版本及以上,在路由模塊新增了一個(gè) missing()
方法,我們?cè)趯?shí)際開發(fā)中,經(jīng)常使用路由隱形綁定自動(dòng)查找對(duì)應(yīng)的數(shù)據(jù),減少在 Controller 中自己編寫代碼。
在之前,如果模型沒有查到對(duì)應(yīng)的數(shù)據(jù),會(huì)自動(dòng)跳轉(zhuǎn)到全局統(tǒng)一的 404 頁(yè)面,不夠靈活。而 missing()
方法就是為了解決這個(gè)問題而來的。
Route::get('/users/{user:slug}', [UserController::class, 'show']) ->name('user.view') ->missing(function (Request $request) { return Redirect::route('user.index'); });
當(dāng)請(qǐng)求 missing.test/users/dalian 時(shí),如果在用戶表中查不到 slug 為 dalian 的數(shù)據(jù),會(huì)跳轉(zhuǎn)到用戶列表的首頁(yè),而不是統(tǒng)一的 404 頁(yè)面。
注意:
該方法只適用于路由的隱形綁定才會(huì)有效,例如在 Controller 中使用findOrFail
方法,即使未查到指定的數(shù)據(jù),也不會(huì)出發(fā)missing
方法,而是會(huì)跳轉(zhuǎn)到統(tǒng)一的 404 頁(yè)面。