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