laravel中最好的选项,可以在不同的命名空间下创建多个模块

时间:2017-01-04 07:06:23

标签: php laravel laravel-5 laravel-5.3

我是 Laravel 的新手,需要知道如何在Laravel中构建我的项目。

1)项目中我们几乎有 21个不同的模块,所有模块都连接到同一个数据库,但每个模块应该在不同的namespace下注册。

例如 - 如果我有管理员和广告资源,管理员应该访问from /admin,广告资源应该访问from /inventory。如果我可以从相应的应用程序文件夹中为每个namespace编写路由,那也没关系。

2)我们拥有不同级别的用户和具有权限的人可以访问不同的URL。所以我打算在用户请求到达每个控制器之前编写一个用于检查权限的中间件。所以我还需要一个顶级中间件来检查登录用户对所有模块的许可。

实现此类应用程序的结构是什么。我只需要在整个应用程序中只连接一个数据库。

1 个答案:

答案 0 :(得分:3)

以下是一些建议:

1)每个模块必须有不同的控制器。如果需要,将控制器进一步放在子目录中。

例如,我将与管理员相关的控制器保存在App \ Controllers目录下的Admin目录中,与App \ Controllers \ API目录中的API相关,同样地,将App \ Controllers \ Web保留在仅限Web的控制器中。

2)为每个控制器设置一个单独的路由文件(web.php)。

将route-file命名为与您正在处理的模块的名称匹配的内容。例如,' inventory.php'仅用于处理库存控制器路线。您也需要注册路线,就像web.php,api.php等路线已经预先注册开箱即用。

3)遵循设计模式以保持代码清洁。我建议看一下Service-Repository模式。

然后代码流程如下:

路由将请求传递给Controller。控制器不处理业务逻辑,并将任务特定请求传递给将处理所有业务逻辑的服务类。如果需要任何特定于数据库的任务(CRUD),则Service类将调用Repository类中定义的方法。

为您的所有模块提供单独的Service and Repository类。例如,InventoryController - > InventoryService - > InventoryRepository。

  

这只是我遵循的一种做法,可能不是最好的   溶液