neilherbertuk / laravel-modules
Laravel 5 模块提供商
Requires
- illuminate/routing: 5.4.*|5.5.*|5.6.*|5.7.*
- laravel/framework: 5.4.*|5.5.*|5.6.*|5.7.*
This package is auto-updated.
Last update: 2021-02-11 21:04:42 UTC
README
一个为 Laravel 5 应用程序添加模块的软件包。此软件包允许您将应用程序的代码部分分离到各自的“模块”或文件夹中,使得与应用程序特定部分或功能相关的所有代码都存储在一个地方。
兼容性
- Laravel 5.4
- Laravel 5.5
目前支持
- 控制器
- 迁移
- 模型
- 路由、Web 和 API
- 服务提供者
- 视图
- 控制台命令
目前不支持
- 数据库填充
- 模块中间件
此软件包将很快提供命令来辅助创建这些。
示例
在 domain.com/admin 的管理面板 - 所有与管理面板相关的功能都可以转换为模块,并存储在单个位置。
示例结构
Admin
- Admin/controllers
- - Admin/controllers/AdminController.php
- Admin/database
- - Admin/database/migrations
- - - Admin/database/migrations/Create_A_Table_Migrtion.php
- Admin/models
- - Admin/models/statistics.php
- Admin/views
- - Admin/views/dashboard.blade.php
- Admin/web.php
安装
此版本已与 Laravel 5.4 和 5.5 进行了测试,其他版本将在未来进行测试。
$ composer require neilherbertuk/laravel-modules:dev-master
Laravel 5.4
如果您正在使用 Laravel 5.4,您需要在您的 config/app.php
中注册服务提供者。
neilherbertuk\modules\ModuleServiceProvider::class,
Laravel 5.5
如果您正在使用 Laravel 5.5 或更高版本,自动软件包发现应该会自动加载 ModuleServiceProvider
,如果这没有发生,请在您 laravel 项目的根目录中运行以下命令:
$ composer dump-autoload $ php artisan package:discover
配置
如果您想更改默认配置,请发布软件包的配置文件。
$ php artisan vendor:publish --provider="neilherbertuk\modules\ModuleServiceProvider" --tag=config
这将在您的 app 中创建一个 config/modules.php
文件,您可以修改它来设置您的配置。
软件包可以以多种方式配置。默认情况下,软件包会自动加载位于 app\Modules
文件夹下的模块。
在我看来(如果错了请纠正我),自动加载在开发中很好,但在生产中不推荐使用,因为查找每个可用模块的成本很高。
启用自动加载
这是默认行为,但可以添加到您的 .env
文件中
MODULES_AUTOLOAD=true
禁用自动加载
将以下内容添加到您的 .env
文件中
MODULES_AUTOLOAD=false
手动加载模块
当禁用自动加载时,将手动加载模块。在您的 config/modules.php
文件中,您将找到一个空的 enabled
数组。只需将您希望手动加载的每个模块的名称作为新条目添加即可。每个名称都是您的模块所在的文件夹名称。
'enabled' => [ 'Admin', 'Forum' ],
禁用模块
在使用自动加载时,可以禁用某些模块。在你的 config/modules.php
文件中有一个空的 disabled
数组。列在这里的任何模块都不会被加载。
'disabled' => [ 'Admin' ],
使用方法
待完成。
Laravel-Modules 包附带一个方便的控制台命令来帮助构建新的模块。可以通过运行以下命令查看其使用方法
$ php artisan make:module
创建新模块
要创建一个新模块,请在 Laravel 项目的根目录下运行以下命令
$ php artisan make:module --create ModuleName [--webroute | --apiroute]
这将在你的 app/Module
文件夹中创建一个如上例所示的新文件夹结构。
新模块路由
除非指定了其他选项,默认情况下,创建命令还将创建一个 Web 路由文件(web.php
)。由该命令生成的路由文件将包括一个分组前缀,以帮助将你的模块与其他应用程序部分分开。
如果你希望创建一个 API 路由文件(api.php
),请在命令中添加 --apiroute
。
$ php artisan make:module --create ModuleName --apiroute
如果你想同时添加 Web 和 API 路由文件,请在创建命令中添加 --webroute
和 --apiroute
,或者如果你已经创建了模块,可以使用这些选项而不带 --create
。
$ php artisan make:module --create ModuleName --apiroute --webroute
模块名称将自动转换为小写并用作任何生成的路由文件的前缀。如果你创建一个名为 "Dashboard" 的新模块,模块内的任何内容都将可在 domain.com/dashboard/ 下访问。
新模块控制器
您可以使用 --controller 选项创建新模块控制器,也可以选择性地包括 --resource
$ php artisan make:module ModuleName --controller NameOfController [--resource]
这将在您的 app\Modules\ModuleName\Controllers
文件夹中放置一个新的控制器。默认情况下,这将创建一个普通的控制器。如果您想创建一个资源控制器,请添加 --resource,这将为您包括所有基本的 CRUD 方法。
模块命名空间
与模块相关的所有文件都必须属于同一个命名空间。如果您使用提供的控制台命令,这将为您自动完成。
namespace app\Modules\ModuleName\Controllers;
namespace app\Modules\ModuleName\Models;
namespace app\Modules\ModuleName\Migrations;
待办事项
- 正在工作 - 完成文档 - 使用部分
- 正在工作 - 创建命令以轻松创建模块以及模块内的各种部分,如控制器和视图。
- 正在工作 - 创建示例项目
- 正在工作 - 测试对 Laravel 5 其他版本的兼容性
- 创建单元测试
错误
请通过在 github 上打开问题来报告任何错误。
安全问题
请将任何安全问题直接通过电子邮件发送到 neil@ea3.co.uk。