【发布时间】:2012-12-11 04:51:21
【问题描述】:
我正在使用 Laravel 开发一个应用程序。但是我对应用程序的模块化结构有疑问。
这是一个例子。
假设我需要一个名为“特色项目”的模块;
这是一个小模块,应该包含在某些控制器中。
问题是我不知道该怎么做?这应该是一个将在其他控制器内部调用的新控制器吗?
这应该是一个模型吗? 这应该写成一个捆绑包吗?
有人知道什么是最好的方法吗?
【问题讨论】:
标签: php module laravel modularity
我正在使用 Laravel 开发一个应用程序。但是我对应用程序的模块化结构有疑问。
这是一个例子。
假设我需要一个名为“特色项目”的模块;
这是一个小模块,应该包含在某些控制器中。
问题是我不知道该怎么做?这应该是一个将在其他控制器内部调用的新控制器吗?
这应该是一个模型吗? 这应该写成一个捆绑包吗?
有人知道什么是最好的方法吗?
【问题讨论】:
标签: php module laravel modularity
这个包让你能够使用带有模块系统的 Laravel 5。您可以简单地将具有自己的控制器、模型、视图、翻译和路由文件的模块拖放或生成到 app/Modules 文件夹中,然后继续使用它们。
按照步骤操作
安装
安装此软件包的最佳方式是通过 Composer 通过您的终端。
从项目根目录运行以下命令
composer 需要 artem-schander/l5-modular 完成此操作后,只需将服务提供者添加到项目的 config/app.php 即可。
服务提供者
ArtemSchander\L5Modular\ModuleServiceProvider::class,
开始
内置的 Artisan 命令 php artisan make:module name [--no-migration] [--no-translation] 在 app/Modules 文件夹中生成一个现成可用的模块,并在必要时生成迁移/翻译。
【讨论】:
我认为这确实没有正确的答案,因为这是偏好问题,尽管有一些事情要记住让您明智地决定代码的放置位置。
该模块是否占用空间小,并且仅靠自身运行?
模块是否需要它自己的路由和视图但不需要库?
该模块是否包含以上两者?
这不是那么简单,还应考虑其他因素。例如,如果模块需要多个控制器,那么最好将它写成一个包。由于捆绑软件不要求您在捆绑目录中拥有除 start.php 文件之外的任何内容,因此您可以使用自动加载器注册您想要的内容。从这里你可以看到很多人的偏好是将他们所有的模块化代码构建在包中。
【讨论】:
诸如特色项目之类的东西可能会调用您的数据库。我会在您的产品模型中创建一个方法,例如称为 getFeaturedItems。然后用eloquent或fluent来得到结果。
【讨论】:
将其放入库中并自动加载如何? http://laravel.com/docs/models#libraries
这样您就可以在任何控制器中调用它。
【讨论】: