我正在使用Laravel开发应用程序。但是我对应用程序的模块化结构有疑问。
这是一个例子。
假设我需要一个名为“特色项目”的模块;
这是一个应包含在某些控制器中的小模块。
问题是我不知道该怎么做?这应该是一个新的控制器,将在其他控制器内调用吗?
这应该是模特吗? 这应该写成捆绑吗?
有没有人知道什么是最好的方法?
答案 0 :(得分:7)
我认为没有一个正确的答案,因为它是偏好的问题,尽管有一些事情要记住,让你做出明智的决定,你的代码应放在哪里。
模块的占用空间是否足够小,并且只能运行它?
模块是否需要它自己的路由和视图,但不需要库?
模块是否同时包含上述内容?
它不是那么简单,也应该考虑其他因素。例如,如果模块需要多个控制器,那么最好将其写入捆绑包中。由于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>