如何避免覆盖 Laravel 中的路由?
How to avoid overwriting routes in Laravel?
提前抱歉,我知道之前有人问过,但我没有想出解决方案。
我是 Laravel 的新手,仍在学习并遇到这个问题:
我的objective是在后台添加页面,然后在前端显示这些页面。
对于网站的前面部分,我有这条路线:
Route::get('/{page}', 'PagesController@show');
- 所以当您访问 /about、/contact、/another-page 时,我使用相同的视图
对于网站的管理部分,我有这条路线:
Route::get('/admin', 'AdminController@show');
我的问题是第一条路线覆盖了第二条路线,我不知道如何避免这种情况。
我试过namespaces and grouping routes,但我得到了同样的结果。
谢谢
为了简单起见,发生这种情况是因为您在管理路由之前有带有参数的路由,因此将发送 "admin as a parameter of page"
简单的修复方法是将管理路由放在您的 "/{page} 之前,这样它会首先找到管理路由,像这样:
Route::get('/admin', 'AdminController@show');
Route::get('/{page}', 'PagesController@show');
但我不建议以这种方式构建路由,并尽可能设置特定的页面,这种构建路由的方式也会混淆 404 路由未找到。
提前抱歉,我知道之前有人问过,但我没有想出解决方案。
我是 Laravel 的新手,仍在学习并遇到这个问题:
我的objective是在后台添加页面,然后在前端显示这些页面。
对于网站的前面部分,我有这条路线:
Route::get('/{page}', 'PagesController@show');
- 所以当您访问 /about、/contact、/another-page 时,我使用相同的视图
对于网站的管理部分,我有这条路线:
Route::get('/admin', 'AdminController@show');
我的问题是第一条路线覆盖了第二条路线,我不知道如何避免这种情况。
我试过namespaces and grouping routes,但我得到了同样的结果。
谢谢
为了简单起见,发生这种情况是因为您在管理路由之前有带有参数的路由,因此将发送 "admin as a parameter of page"
简单的修复方法是将管理路由放在您的 "/{page} 之前,这样它会首先找到管理路由,像这样:
Route::get('/admin', 'AdminController@show');
Route::get('/{page}', 'PagesController@show');
但我不建议以这种方式构建路由,并尽可能设置特定的页面,这种构建路由的方式也会混淆 404 路由未找到。