【发布时间】:2020-06-16 11:58:19
【问题描述】:
我有两种路由,管理路由和前端路由。
前端路由
Route::get('{locale?}/', ['uses' => '\App\Http\Controllers\loadViewController@home']);
Route::get('{locale?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@index']);
Route::get('{locale?}/{template?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@detail']);
后端路由
Route::prefix('admin/dashboard')->group(function () {
Route::get('/', 'DashboardController@index')->name('dashboard');
});
现在当我输入 admin/dashboard 或 api/admin 时,laravel 使用前端路由来加载视图,而我希望加载后端视图。
所以为了过滤掉我试过的后端路由
Route::group(['where' => ['page' => '^(?!admin|api)$', 'template' => '^(?!admin|api)$']], function ({
Route::get('{locale?}/', ['uses' => '\App\Http\Controllers\loadViewController@home']);
Route::get('{locale?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@index']);
Route::get('{locale?}/{template?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@detail']);
});
这显然不起作用
前端路由也不应该有 /website 之类的东西,它们都应该以 /
开头我的问题是:如何在调用时分别加载后端和前端路由而不会干扰,即使它们在参数方面具有相同的 url 长度,请记住管理路由始终以 /admin 或 /api 开头.
注意:我不能把后端路由放在前端路由之前
提前致谢!
【问题讨论】:
-
您可以查看正则表达式约束并尝试使用
where约束来获取所有具有"admin/*"的路由。希望能帮助到你。 laravel.com/docs/7.x/…