2017-05-08 100 views
1

我不知道这样做的最佳方式,但基本上我有一些路线设置和一些供应商的路线,但我的“赶上所有”路线被调用,当我需要供应商“/论坛”被使用。laravel抓住所有的路线作为最后的选项

这里是我的路线:

Route::get('/', function() { return view('welcome'); }); 
Route::get('/contact', function() { return view('contact'); }); 
Route::get('/login', function() { return view('login'); }); 
Route::get('/signup', '[email protected]'); 
Route::get('/logout', '[email protected]'); 
Route::get('/{slug}', '[email protected]'); 

你可以看到最后的路线基本上只是得到鼻涕虫,然后在控制器我通过塞返回页面。问题出在/论坛[email protected]被调用,因为我认为Laravel在供应商之前查看此路由文件。有没有更好的方法来设置它,以便Route::get('/{slug}', '[email protected]');作为供应商路线之后的最后一个可能选项被调用?

回答

0

Laravel路线是按照它们的定义进行加载的,因此在/{slug}之前匹配/forum的唯一方法是确保首先加载路线。为了保证这是最后一次,我建议所有其他航线app/Providers/RouteServiceProvider.php加载它看起来像后,将它添加加载:

public function map() 
{ 
    $this->mapApiRoutes(); 
    $this->mapWebRoutes(); 

    Route::get('/{slug}', 'App\Http\Controllers\[email protected]'); 
} 
+0

感谢。即使我把它放在'app/Providers/RouteServiceProvider.php'论坛中,也会尝试使用错误的控制器。 '/ forum'路由由供应商包处理,所以我需要加载'Route :: get('/ {slug}','App \ Http \ Controllers \ PageController @ show'); }''在供应商路由以及 – Packy

+0

ohhh之后,然后将该供应商的服务提供商放置在'App \ Providers \ RouteServiceProvider :: class,'之前的'config/app.php'中的'providers'数组中,并且它应该首先加载该路由在你的路线之前。 –