Laravel模块化结构


Laravel modular structure

我正在使用Laravel开发一个应用程序。但是我对应用程序的模块化结构有疑问。

下面是一个例子。

假设我需要一个名为"featured items"的模块;

这是一个小模块,应该包含在一些控制器中。

问题是我不确定如何做到这一点?这应该是一个将在其他控制器内部调用的新控制器吗?

这应该是模型吗?应该把它写成一个包吗?

有没有人知道什么是最好的方法?

我不认为这个问题有一个正确的答案,因为这是一个偏好问题,尽管有一些事情要记住,让你做出一个明智的决定,你的代码应该放在哪里。

模块是否占用空间小,仅靠自身就能运行?

    创建一个库

模块是否需要自己的路由和视图,但不需要库?

  • 创建应用控制器
  • 使用Laravel Routes
  • 使用bundle控制器

模块是否同时包含上述内容?

  • 创建一个包含控制器和库的bundle
这不是那么简单,还应该考虑其他因素。例如,如果模块需要多个控制器,你最好把它写在一个bundle中。由于捆绑包不需要在捆绑包目录中包含start.php文件以外的任何文件,所以您可以向自动加载器注册您想要的内容。从这里你可以看到很多人的偏好是把他们所有的模块化代码构建在bundle中。

这个包让你能够使用模块系统的Laravel 5。你可以简单地将模块连同它们自己的控制器、模型、视图、翻译和路由文件放到app/modules文件夹中,然后继续使用它们。

按照

安装

安装这个包的最好方法是通过Composer在你的终端上安装。

从项目根目录

运行以下命令

composer要求artemm -schander/15 -modular一旦这个操作完成,只需将服务提供程序添加到项目的config/app.php中,就可以完成了。

服务提供者

ArtemSchander ' L5Modular ' ModuleServiceProvider::类,

开始

内置的Artisan命令php Artisan make:module name[——no-migration][——no-translation]在app/Modules文件夹中生成一个可使用的模块,必要时还会进行迁移/翻译。

https://github.com/Artem-Schander/L5Modular

把它放在库中并自动加载它怎么样?

http://laravel.com/docs/models库

这样你就可以在任何控制器中调用它

像特色项目这样的东西可能会调用您的数据库。我会在你的产品模型中创建一个方法,例如getFeaturedItems。然后用雄辩或流利来获得结果。