2017-05-08 59 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'數組中,並且它應該首先加載該路由在你的路線之前。 –