在拉拉韦尔组织路线

哈Ha 最近,我同意对自由职业者订购的网站进行审查。 我期望看到控制器能够完成所有工作并占用200多行(以及不良代码的其他表现形式),但是一切都还不错。 验证不在于控制器,这很常见。 当然,有时会出现一些PSR-2不一致的情况,但是在我查看带有路由的文件之前,一切看起来都很好。 它占据了几个屏幕,并对路线组发表了评论。 我联系了开发人员,他说一切都“增长了”,并同意修复它。 在下一个版本中,我看到他用静态方法创建了几个类,他将代码转移到该类中,并通常通过授权将其调用。 然后,我想起我已经遇到过这种情况,并遇到了这样一个争论:“文档中没有提到关于路由到不同文件的任何事情。” 几分钟后,我找到了一篇文章,并将其发送给开发人员。 半个小时后,我收到了正常形式的路线,并决定本文对许多初学者都将是有用的。 因此,这个免费的翻译就诞生了。

如果您从未编辑过RouteServiceProvider文件,欢迎关注。

如果您正在处理一个小型项目,并且只有两条路线,那么就不会有问题。 但是,如果路由数量太大,则很难在一个文件中工作,尤其是当您拥有面向不同用户,管理员等的页面时。

最初,laravel创建4个文件:

  • api.php
  • console.php
  • channels.php
  • web.php

假设您计划为每种类型的用户创建一个包含十个页面的项目:

  • 管理员[网站设置,统计信息等 ]
  • 用户[注册,登录,配置文件管理等。 ]
  • 来宾[博客,联系人等。 ]

路由内创建两个目录:

  • 网络 -这是与网络界面相关的所有路由。
  • api-这是所有与API相关的路由


我们将api.php路由移动到routes / web中路由/ apiweb.php目录 ,并将其余的console.phpchannels.php保留在路由中。

route / web内创建admin.php文件。 该文件将包含我们与管理员关联的所有Web路由,然后在其中为与用户关联的路由创建user.php



app / Providers / RouteServiceProvider.php-此文件负责下载我们应用程序的所有路由。 map()方法调用mapApiRoutes()mapWebRoutes()方法来加载已经移动的web.phpapi.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.phproute / 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”。

Source: https://habr.com/ru/post/zh-CN474788/


All Articles