模块开发

模块开发介绍

在开发模块之前,请在模块市场自行安装《开发示例程序》,该示例中涵盖了几乎所有模块开发规范和技巧。

开发示例程序: https://modstart.com/m/Demo模块开发 - 图1 (opens new window)

开发示例程序会不断更新,请随时查看最新的开发示例程序。

模块开发入门

第一步,下载模块开发助手

模块开发助手可以极大效率的提高模块开发效率,通过 https://modstart.com/m/ModuleDeveloper模块开发 - 图2 (opens new window) 下载。

第二步,使用模块开发助手创建模块

访问 系统管理 → 模块开发助手,通过常用工具创建模块

模块创建

第三步,完成模块代码开发

第二步会根据填写的模块基本信息完成模块的创建,并且生成一些示例代码,通过修改和完善模块代码,完成模块的功能开发

模块示例代码

第四步,模块打包上传到模块市场

如果您开发的模块需要上传分享到模块市场,按照如下步骤完成模块分享。

  1. 注册ModStart账号:访问 https://modstart.com模块开发 - 图5 (opens new window) 完成账号注册
  2. 实名认证:在用户中心完成用户实名认证
  3. 创建模块:认证完成后,在用户中心访问开发者中心,完成模块的创建
  4. 打包上传:返回到本地的模块开发助手,登录ModStart账号,在对应开发的模块中点击发布
  5. 模块审核上线:发布成功后,需要后台审核模块,完成审核后模块即可显示在模块市场。

模块打包上传

模块目录介绍

模块详细目录介绍

  1. SomeName
  2. ├── Admin 后台管理
  3. ├── Api API接口
  4. ├── Constant 常量
  5. ├── Core 核心资源
  6. └── ModuleServiceProvider.php 模块核心ServiceProvider,会自动被系统加载
  7. ├── Docs 模块文档目录
  8. ├── doc 模块使用文档
  9. ├── module 模块说明文档
  10. └── release 模块Release日志
  11. ├── Migrate 模块数据库迁移文件
  12. ├── Util 模块工具包
  13. ├── View 模块视图
  14. ├── Web 模块前台
  15. ├── config.json 模块配置文件
  16. └── resources 模块其他资源文件

配置文件 config.json

配置文件是一个合法的JSON,请勿在JSON中包含注释,以下为了参数含义会在JSON中包含注释

  1. {
  2. // 模块唯一标示,请使用 SomeExampleName 首字母大写的驼峰命名方式
  3. // 如果您的模块后期需要发布到模块市场,在开发前请先创建模块,防止与他人冲突
  4. "name": "Demo",
  5. // 模块文字说明
  6. "title": "开发示例程序",
  7. // 模块类型,可以包含多个,目前支持以下值
  8. // PC: 电脑版
  9. // Mobile: 手机H5
  10. // App: 手机APP
  11. // MiniApp: 小程序
  12. // WxMiniApp: 微信小程序
  13. // Theme: 模板主题
  14. // Admin: 后台管理
  15. "types": [
  16. "PC",
  17. "Mobile"
  18. ],
  19. // 当前模块版本号,请使用 主版本号.次版本号.修复版本号 的格式
  20. // 大的迭代请升级主版本号,常规次二代升级次版本号,Bug修复升级修复版本号
  21. "version": "1.2.0",
  22. // 模块依赖,支持多个
  23. "require": [
  24. // 依赖 Vendor 模块任何版本
  25. "Vendor",
  26. // 依赖 Abc 模块任何版本
  27. "Abc:*",
  28. // 依赖 Abc 模块大于等于1.1.0的版本
  29. "Abc:>=1.1.0",
  30. // 依赖 Abc 模块大于1.1.0的版本
  31. "Abc:>1.1.0",
  32. // 依赖 Abc 模块小于等于1.1.0的版本
  33. "Abc:<=1.1.0",
  34. // 依赖 Abc 模块小于1.1.0的版本
  35. "Abc:<1.1.0",
  36. // 依赖 Abc 模块1.1.0的版本,其他任何版本都不匹配
  37. "Abc:==1.1.0"
  38. ],
  39. // 模块依赖的 ModStart 核心版本,可以通过 \ModStart\ModStart::$version 获取ModStart核心版本号
  40. "modstartVersion": "*",
  41. // 模块作者
  42. "author": "ModStart",
  43. // 模块描述
  44. "description": "ModStart开发示例程序",
  45. // 模块可配置项,可在程序中通过如下方法获取配置信息
  46. // \ModStart\Module\ModuleManager::getModuleConfig('模块名','配置名')
  47. "config": {
  48. // 定义一个名称为 testText 的文本参数
  49. "testText": [
  50. [
  51. "text",
  52. "文字参数"
  53. ]
  54. ],
  55. // 定义一个名称为 testEnable 的开关
  56. "testEnable": [
  57. [
  58. "switch",
  59. "功能启用"
  60. ]
  61. ],
  62. // 定义一个名称为 testSelect 的下拉选项,包含两个选项
  63. "testSelect": [
  64. [
  65. "select",
  66. "下拉选择"
  67. ],
  68. [
  69. "options",
  70. {
  71. "key1": "选项1",
  72. "key2": "选项2"
  73. }
  74. ]
  75. ]
  76. }
  77. }

Web前台开发

前台代码 Routes、Controller 都应放在 Web 目录中。

Admin后台开发

前台代码 Routes、Controller 都应放在 Admin 目录中。

注册后台菜单

Core/ModuleServiceProvider.php 中配置,通过如下方式注册菜单:

  1. <?php
  2. AdminMenu::register(function(){
  3. return [
  4. 'menu' => [
  5. [
  6. 'title' => '一级菜单',
  7. 'icon' => 'tools',
  8. 'sort' => 150,
  9. 'children' => [
  10. [
  11. 'title' => '二级菜单',
  12. 'url' => '\XxxController@index',
  13. ]
  14. ]
  15. ]
  16. ]
  17. ];
  18. });

ModStart系统按照如下相同的规则进行菜单合并:

  • 一级菜单(title+icon+sort)
  • 二级菜单(title)

菜单使用规范

我们强烈建议您按照系统推荐的方式组织菜单避免用户安装多个模块后系统菜单变得混乱。

  • 大的业务功能模块可以插入一级菜单,用于管理模块涉及的业务功能
  • 物料类、工具类的模块使用二级或三级菜单
  • 菜单由上至下应遵循使用频率递减的特性
目录内容排序(sort值)图标(icon)说明
用户管理100users用户管理模块
|— 用户管理
|— …
物料管理200description系统基础物料管理
|— 导航配置
|— 文章管理
|— 友情链接
|— …
功能设置300tools模块业务功能相关的设置
|— 用户设置
|— …
系统设置400cog技术功能相关设置
|— 基础配置
|— 短信设置
|— 支付设置
|— …
后台权限500user-o管理员、角色、管理日志
|— 管理角色
|— 管理账号
|— 管理日志
运维工具600magic-wand系统运维阶段功能模块
|— …
系统管理700code-alt系统功能管理(通常用于开发阶段)
|— 模块管理

Api接口开发

前台代码 Routes、Controller 都应放在 Api 目录中。

OpenApi开放接口开发

前台代码 Routes、Controller 都应放在 OpenApi 目录中。

开发技巧

Api接口代码的复用

为了最大限度的敏捷开发,可以在 WebOpenApiAdmin 中最大程度的复用 Api 代码。