【问题标题】:How to avoid overwriting routes in Laravel?如何避免覆盖 Laravel 中的路由?
【发布时间】:2020-02-06 14:00:40
【问题描述】:

对不起,我知道以前有人问过,但我没有找到解决办法。

我是 Laravel 的新手,仍在学习并遇到这个问题:

我的目标是在管理中添加页面并在前端显示这些页面。

对于网站的前面部分,我有这条路线:

Route::get('/{page}', 'PagesController@show');
  • 所以当您访问 /about、/contact、/another-page 时,我使用相同的视图

对于网站的管理部分,我有这条路线:

Route::get('/admin', 'AdminController@show');

我的问题是第一条路线覆盖了第二条路线,我不知道如何避免这种情况。

我尝试过使用namespaces and grouping routes,但得到了相同的结果。

谢谢

【问题讨论】:

  • 在路由文件中切换他们的订单。我不记得第一个是覆盖第二个还是相反,但是交换它应该可以工作。
  • 给你的路线起个名字,当相同的名字写成更多关于相同的laravel.com/docs/5.8/routing#named-routes时,它会给你错误laravel.com/docs/5.8/routing#named-routes
  • @ceejayoz 我试试看
  • @ceejayoz 我刚刚进行了全新安装并交换了路线订单,并且可以正常工作。谢谢

标签: laravel routes laravel-6


【解决方案1】:

为了简单起见,这是因为您在 admin 路由之前有带有参数的路由,因此将发送“admin 作为页面的参数”

简单的解决方法是将管理路由放在“/{page}”之前,这样它会首先找到管理路由,如下所示:

Route::get('/admin', 'AdminController@show');
Route::get('/{page}', 'PagesController@show');

但我不建议以这种方式构建您的路线,并在可能的情况下设置具体页面,这种构建路线的方式也会与未找到的 404 路线混淆。

【讨论】:

  • 我确实建议阅读有关 laravel 路线和学习名称等的内容以正确地做事。
  • 嗨@TheLacrox,我已经尝试过使用名称,但它不起作用(得到相同的结果)。我必须重新安装并重新开始,因为我的所有测试都不再有效。我会试试你的方法,然后再回来。在创建自定义 CMS 时,是否有关于如何组织路线的指南?
猜你喜欢
  • 2020-05-18
  • 2022-01-22
  • 1970-01-01
  • 2021-11-10
  • 2015-05-15
  • 1970-01-01
  • 2017-11-27
  • 2021-11-03
  • 2013-06-02
相关资源
最近更新 更多