laravel 5 - 在 routes.php 末尾捕获所有路由(Route::controller)?

Posted

技术标签:

【中文标题】laravel 5 - 在 routes.php 末尾捕获所有路由(Route::controller)?【英文标题】:laravel 5 - catch all route (Route::controller) at the end of routes.php? 【发布时间】:2015-04-07 04:25:43 【问题描述】:

我怎样才能像这样在 laravel 5 中的 routes.php 末尾使用包罗万象的路由?

Route::controller('user','PublicProfileController');

它“破坏”了 laravel 调试栏和所有视图中的一些 javascript。这似乎效果更好:

Route::get('user','PublicProfileController@index');

我正在尝试使用像 mysite.com/username 这样的 URL 以及像 mysite.com/username/photosmysite.com/username/posts 这样的段

【问题讨论】:

Route::controller('/user','PublicProfileController'); 应该是你需要的吗? 似乎不是 :( 它破坏了整个网站和调试栏的 javascript 照片排列。如果我 #comment 这条线,一切都会再次正常 好的 - 所以问题是分析器(可能还有你的照片包)在routes.php 文件之后注册他们的路线。因此,当您创建一个包罗万象的路线时 - 它会破坏任何注册 after routes.php. 的包 你能做一些像mysite.com/u/username这样的事情吗?像Reddit这样的网站吗?因为您还必须阻止在您的应用程序中使用具有路由名称的用户名 - 即 authlogin 好的。谢谢。我现在改成site.com/users/username 【参考方案1】:

正如 cmets 中所讨论的,这可以通过不使用 catch all 路线轻松解决。但是还有另一种方法。

问题是包裹的路线在您的routes.php 中的路线之后注册。您可以通过更改config/app.php 中的providers 数组中的服务提供者的顺序来更改它。

只需确保包的服务提供者列在'App\Providers\RouteServiceProvider' 之前(这是加载应用程序routes.php 的位置)

【讨论】:

以上是关于laravel 5 - 在 routes.php 末尾捕获所有路由(Route::controller)?的主要内容,如果未能解决你的问题,请参考以下文章

从4.2迁移到5.5后,从app / http / routes.php而不是routes / web.php加载路由

Laravel 5:会话没有按应有的方式工作

如何在laravel routes.php里获取控制器和action名称

新 Laravel 项目中缺少 routes.php 文件

Redirect::action() - Routes.php Laravel 中的未知操作异常

我可以使用 Laravel 5 中间件来允许包覆盖应用程序路由吗?