Laravel“根”路由变量

时间:2019-03-03 12:59:43

标签: php laravel

在Laravel,我有以下路线。我想能够同时调用这两个国家以及域“根”上的页面,而不用任何目录前缀。

我想要实现的是,当雄辩的模型中找不到任何页面时,它将尝试打开该国家/地区,如果同样失败,则显示404。

那有可能吗,我需要改变什么?

false

编辑:我想我有点不清楚。 问题是,从未到达true路由,因为它之前以Route::get('/{page}', 'PageController@view')->name('pages.view'); Route::get('/{country}', 'CountryController@view')->name('countries.view'); 失败。假设我呼叫countries.view-它首先与pages.view路由匹配,但没有页面/germany存在。它立即抛出404,但我希望它在此之后检查该国家,并且只有在/ germany也不存在时才会失败。

3 个答案:

答案 0 :(得分:1)

不可知论者如何? 一种方法,您测试参数,然后返回正确的结果。

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 :(得分:0)

有几种方法我将提及两种方法:

1-路由模型绑定:     内页控制器创建功能

  public function view(Page $page){
   }

如果页面不存在,此函数将返回找不到

2-正常检查:

   public function view($page){
    $check= Page::find($page);
     if(!$check) abort(404);
   }

答案 2 :(得分:-1)

创建resources / views / errors / 404.blade.php文件夹并定义404错误消息