哈Ha 最近,我同意对自由职业者订购的网站进行审查。 我期望看到控制器能够完成所有工作并占用200多行(以及不良代码的其他表现形式),但是一切都还不错。 验证不在于控制器,这很常见。 当然,有时会出现一些PSR-2不一致的情况,但是在我查看带有路由的文件之前,一切看起来都很好。 它占据了几个屏幕,并对路线组发表了评论。 我联系了开发人员,他说一切都“增长了”,并同意修复它。 在下一个版本中,我看到他用静态方法创建了几个类,他将代码转移到该类中,并通常通过授权将其调用。 然后,我想起我已经遇到过这种情况,并遇到了这样一个争论:“文档中没有提到关于路由到不同文件的任何事情。” 几分钟后,我找到了一篇文章,并将其发送给开发人员。 半个小时后,我收到了正常形式的路线,并决定本文对许多初学者都将是有用的。 因此,这个免费的翻译就诞生了。
如果您从未编辑过RouteServiceProvider文件,欢迎关注。
如果您正在处理一个小型项目,并且只有两条路线,那么就不会有问题。 但是,如果路由数量太大,则很难在一个文件中工作,尤其是当您拥有面向不同用户,管理员等的页面时。
最初,laravel创建4个文件:
- api.php
- console.php
- channels.php
- web.php
假设您计划为每种类型的用户创建一个包含十个页面的项目:
- 管理员[网站设置,统计信息等 ]
- 用户[注册,登录,配置文件管理等。 ]
- 来宾[博客,联系人等。 ]
在
路由内创建两个目录:
- 网络 -这是与网络界面相关的所有路由。
- api-这是所有与API相关的路由
我们将
api.php从
路由移动到
routes / web中的
路由/ api和
web.php目录 ,并将其余的
console.php和
channels.php保留在路由中。
在
route / web内创建
admin.php文件。 该文件将包含我们与管理员关联的所有Web路由,然后在其中为与用户关联的路由创建
user.php 。
app / Providers / RouteServiceProvider.php-此文件负责下载我们应用程序的所有路由。
map()方法调用
mapApiRoutes()和
mapWebRoutes()方法来加载已经移动的
web.php和
api.php文件,因此让我们修复路由文件的路径。
protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web/web.php')); }
protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api/api.php')); }
现在在
RouteServiceProvider.php中为
route / web / admin.php和
route / web / user.php创建新方法
protected function mapAdminWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('admin') ->group(base_path('routes/web/admin.php')); }
protected function mapUserWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('user') ->group(base_path('routes/web/user.php')); }
请注意,在此代码中可以为路径添加名称空间,中间件,前缀等。
接下来,只需从map()调用它们即可:
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapAdminWebRoutes(); $this->mapUserWebRoutes(); }
最后一步:
打开路线/ web / user.php并添加测试路线:
Route::get('/test', function () { return response(' ', 200); });
转到site.local / user / test,您应该看到文本“ Test Route”。