Laravel模块化结构

时间:2012-12-25 00:59:38

标签: php module laravel modularity

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

这是一个例子。

假设我需要一个名为“特色项目”的模块;

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

问题是我不知道该怎么做?这应该是一个新的控制器,将在其他控制器内调用吗?

这应该是模特吗? 这应该写成捆绑吗?

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

4 个答案:

答案 0 :(得分:7)

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

模块的占用空间是否足够小,并且只能运行它?

  • 创建图书馆

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

  • 创建应用程序控制器
  • 使用Laravel Routes
  • 使用捆绑控制器

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

  • 使用控制器和库创建一个包

它不是那么简单,也应该考虑其他因素。例如,如果模块需要多个控制器,那么最好将其写入捆绑包中。由于bundle不需要你在bundle目录中拥有更多的start.php文件,你可以使用Autoloader注册你想要的内容。从中您可以看到许多人的偏好是在捆绑中构建所有模块化代码。

答案 1 :(得分:0)

如何将它放入库并自动加载? http://laravel.com/docs/models#libraries

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

答案 2 :(得分:0)

像特色项目之类的东西可能会调用您的数据库。我会在您的Product模型中创建一个名为getFeaturedItems的方法。然后使用雄辩或流利来获得结果。

答案 3 :(得分:0)

该软件包使您能够将Laravel 5与模块系统配合使用。您只需将具有自己的控制器,模型,视图,翻译和路径文件的模块放入或生成到app / Modules文件夹中,然后继续使用它们。

按照步骤

安装

安装此软件包的最佳方法是通过您的终端通过Composer。

从项目根

运行以下命令

作曲家需要artem-schander / l5-modular 完成此操作后,只需将服务提供程序添加到项目的config / app.php中即可完成。

服务提供商

ArtemSchander \ L5Modular \ ModuleServiceProvider ::类,

入门

内置Artisan命令php artisan make:模块名称[--no-migration] [--no-translation]在app / Modules文件夹中生成一个可立即使用的模块,并在必要时生成一个迁移/翻译。 p>

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