laravel捕获所有路线作为最后选项

时间:2017-05-08 17:25:51

标签: php laravel

我不确定最好的方法,但基本上我有一些路线设置和一些供应商的路线,但我的那种"赶上所有"当我需要供应商" / forum"要使用的。

以下是我的路线:

Route::get('/', function () { return view('welcome'); });
Route::get('/contact', function () { return view('contact'); });
Route::get('/login', function () { return view('login'); });
Route::get('/signup', 'UserController@create');
Route::get('/logout', 'UserController@logout');
Route::get('/{slug}', 'PageController@show');

您可以看到最后一条路线基本上只是获取了slug然后在控制器中我通过slug返回页面。问题在于/ PageController@show被调用,因为我假设Laravel在供应商之前查看此路由文件。是否有更好的设置方式,因此Route::get('/{slug}', 'PageController@show');被称为供应商路线后的最后一个可能选项?

1 个答案:

答案 0 :(得分:0)

Laravel路由按照定义的顺序加载,因此在/forum之前让/{slug}匹配的唯一方法是确保首先加载路由。为了保证最后加载,我会建议在app/Providers/RouteServiceProvider.php中加载所有其他路由后添加它,如下所示:

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

    Route::get('/{slug}', 'App\Http\Controllers\PageController@show');
}