[英]Laravel “root” route variable
我在Laravel有以下路線。 我想能夠調用這兩個國家以及域“根”上的頁面,而不用任何目錄前綴。
我想要實現的是,當雄辯的模型中找不到任何頁面時,它將嘗試打開該國家/地區,如果同樣失敗,則顯示404。
那有可能嗎,我需要改變什么?
Route::get('/{page}', 'PageController@view')->name('pages.view');
Route::get('/{country}', 'CountryController@view')->name('countries.view');
編輯:我想我有點不清楚。 問題是,該countries.view
路線永遠達不到,因為它與之前失敗pages.view
。 假設我叫/germany
pages.view
它首先與pages.view
路由匹配,但沒有germany
頁面存在。 它立即拋出404,但是我希望它在此之后檢查該國家,並且僅在/ germany不存在作為國家的情況下才會失敗。
不可知論者如何? 一種方法是,測試參數,然后返回正確的結果。
Route::get('/{pageOrCountry}',function($pageOrCountry){
$page = App\Page::find($pageOrCountry);
if($page) return $page;
else $country = App\Country::find($pageOrCountry);
if($country) return $country;
else return redirect('404');
});
有幾種方式,我將提到兩種方式:
1-路由模型綁定:內部頁面控制器創建功能
public function view(Page $page){
}
如果頁面不存在,此函數將返回找不到
2-正常檢查:
public function view($page){
$check= Page::find($page);
if(!$check) abort(404);
}
創建resources / views / errors / 404.blade.php文件夾並定義404錯誤消息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.