簡體   English   中英

Laravel“根”路徑變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM