一个完整强大的模块,肯定会有许许多多可以自定义的配置,下面我们来详细讲解模块配置信息的各项参数。
我们知道,模块配置信息文件`info.php`是返回一个数组,里面包含了关于模块的各项信息。
| 参数 | 含义 | 类型 | 必填 |
| --- | --- | --- | :---: |
| name | 模块名 | string | 是 |
| title | 模块标题 | string | 是 |
| identifier | 模块唯一标识 | string | 是 |
| icon | 字体图标 | string | 否 |
| description | 模块描述 | string | 是 |
| author | 开发者 | string | 是 |
| author_url | 开发者网址 | string | 否 |
| version | 模块版本 | string | 是 |
| need_module | 模块依赖 | array | 否 |
| need_plugin | 插件依赖 | array | 否 |
| tables | 数据表 | array | 否 |
| database_prefix | 表前缀 | string | 否 |
| config | 模块参数配置 | array | 否 |
| access | 数据授权配置 | array | 否 |
| action | 行为参数配置 | array | 否 |
| trigger | 触发器配置 | array | 否 |
下面来逐一讲解各个参数。
## name - 模块名
由字母和下划线组成,建议全部使用小写字母,如:cms、user、shop等等,因为系统会对应模块名和数据表名。
## title - 模块标题
该标题会在顶部导航显示,也会在模块管理中显示。如:门户、用户、商城等。
## identifier - 模块唯一标识
这是区分不同开发者不同模块的重要信息,格式:模块名.开发者标识.module,如:`cms.ming.module` 。
## icon - 字体图标
系统内置了三套字体图标:`SIMPLE LINE ICONS`、`FONT AWESOME`、`GLYPHICONS` ,如填写:"fa fa-user"。当然,如果还不满足要求,您可以自己添加别的字体图标库。
## description - 模块描述
对模块进行简略的描述,以便使用者能快速的了解该模块的功能或者其他信息。
## author - 开发者
模块的开发者名称
## author_url - 开发者网站地址
开发者网站地址,请填写完整的url地址,如:http://www.dolphinphp.com
## version - 模块版本号
格式采用三段式:主版本号.次版本号.修订版本号,如:1.0.1。以后的模块升级,模块版本比较都按这种格式,请务必填写正确。
## need_module - 模块依赖
>[info] 格式[[模块名, 模块唯一标识, 依赖版本, 对比方式]]
有些模块需要依赖于某个或几个模块,那么就必须填写所依赖的模块信息,如:
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0']
]
~~~
表示模块依赖于`cms`模块,并且该模块的唯一标识符是`cms.ming.module`,因为不同开发者都可能开发名为`cms`的模块,这样,模块唯一标识的作用就体现出来了。
>[info] 其中,模块名、模块唯一标识、依赖版本这三个是必填的,如果不填写对比方式,则默认为“=”,即等于某个版本。
版本比较使用了php的`version_compare`函数,该函数支持的比较操作符有:<、 lt、<=、 le、>、 gt、>=、 ge、==、 =、eq、 !=、<> 和 ne。
| 比较操作符 | 含义 |
| --- | --- |
| <、 lt | 小于 |
| <=、 le | 小于等于 |
| >、 gt | 大于 |
| >=、 ge | 大于等于 |
| ==、 =、eq | 等于 |
| !=、<>、 ne | 不等于 |
>[danger] 注意:此参数区分大小写,所以它的值应该是小写的,不能填写“LG”、“GT”等。
所依赖的模块需要大于某个版本
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>']
]
// 或者
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', 'gt']
]
~~~
依赖多个模块
~~~
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>'],
['admin', 'admin.dolphinphp.module', '1.0.1']
]
~~~
## need_plugin - 插件依赖
>[info] 格式[[插件名, 插件唯一标识, 依赖版本, 对比方式]]
如果您的模块依赖有些插件,则需填写插件依赖,如:
~~~
'need_plugin' => [
['sms', 'sms.ming.plugin', '1.0.0']
]
~~~
其他用法和模块依赖类似,这里就不赘述了。
## tables - 数据表
如果您的模块包含了数据表,则需填写数据表名。比如,cms模块有两张表,`cms_article`、`cms_category`,则这么填写:
~~~
'tables' => [
'cms_article',
'cms_category'
]
~~~
>[warning] 表名无需填写表前缀,系统检测的时候会自动带上系统设置的表前缀。
## database_prefix - 表前缀
模块的数据表名建议格式为:表前缀+模块名+控制器,比如:`dp_admin_config`,那么`database_prefix`参数则填写:`dp_`。填写了表前缀后,系统在安装模块时,会将此表前缀替换成目标系统所设置的表前缀,方便不同用户安装您的模块。
## config - 模块参数配置
如果模块需要自定义一些配置信息,则需配置`config`参数。
它的用法和[添加表单项通用方法](添加表单项通用方法.md)的`addFormItems`方法一致,可设置系统内置的30多种表单类型,比如:单选,复选、下拉、单行文本,编辑器、联动等等。
我们在开发微信模块的时候,需要给用户设置appid等信息,那么可以这样设置:
~~~
'config' => [
['text', 'appid', 'AppId', '应用ID,登录 微信公众平台 查看'],
['text', 'secret', 'AppSecret', '应用密钥,登录 微信公众平台 查看'],
['text', 'token', 'Token', '令牌,用于接口验证,登录 微信公众平台,在【基本配置】中设置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密钥,登录 微信公众平台,在【基本配置】中设置'],
]
~~~
不同类型的参数是不同的,这个我们在后面的章节会讲到,这里不理解不要紧,只要知道如果需要设置配置信息,则按这种格式去配置。
如果需要配置分组,那么可以这样写:
~~~
'config' => [
['group',
[
'分组1' => [
['radio', 'status1', '单选', '', ['1' => '开启', '0' => '关闭'], 1],
['text', 'text1', '单行文本', '提示', 'x'],
['textarea', 'textarea1', '多行文本', '提示'],
['checkbox', 'checkbox1', '多选', '提示', ['1' => '是', '0' => '否'], 0],
],
'分组2' => [
['textarea', 'textarea2', '多行文本', '提示'],
['checkbox', 'checkbox2', '多选', '提示', ['1' => '是', '0' => '否'], 0],
]
]
]
]
~~~
>[info] 配置好这些内容后,安装模块后才生效,并且需要在某个控制器执行 **return $this->moduleConfig();** 即可自动生成这些配置的页面
>比如在cms模块的Confg控制器中的index方法调用 **return $this->moduleConfig();**
~~~
class Config extends Admin
{
/**
* 文章设置页
* @return mixed
*/
public function index()
{
// 调用ModuleConfig()方法即可
return $this->moduleConfig();
}
}
~~~
那么只要访问这个方法,即可管理模块配置信息。
>[info] 如何获取模块的配置,请参考[方法参考](方法参考.md)
## access - 授权配置
>[danger] 注意:1.3.2版本以后的数据授权,请查看[数据授权(1.3.2+)](数据授权.md)
有些模块可能有这样的需求,需要给不同用户分配不同的权限,比如某些用户只能看某些内容,那么可以填写授权配置。
>[danger] 注意:这里的授权配置只是提供给您一个方便的操作去管理和设置权限节点,获取到某个用户的授权之后该如何操作则需要开发者自己去实现。
~~~
'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name"
],
],
~~~
* `group` 分组标识,名字自定义,可以设置多个授权。
* `tab_title` tab导航标题
* `table_name` 表名,表示要关联哪张表,不需要填写表前缀,这里表示部门表。
* `primary_key` 主键字段名
* `parent_id` 父级id字段名
* `node_name` 权限节点字段名
* `model_name` 模型名(可选)
* `page_tips` 页面提示(可选,1.0.3+)
* `tips_type` 提示类型(可选,默认为info,1.0.3+)
`dp_admin_group`数据表有如下三个字段,分别对应`primary_key`、`parent_id`、`node_name`。
![](https://box.kancloud.cn/ec0d6189920971c72a6e20a2a316f228_264x93.png)
安装模块之后,在“用户管理”中,点击操作栏的![](https://box.kancloud.cn/9e830474cbd053247e05658608fbd95a_34x31.png) 按钮,可进入授权页面。
![](https://box.kancloud.cn/c05f8b6e5cf5e41b68c8e1c3f0b4aa02_637x493.png)
这里出现的节点,是从上面定义的表`dp_admin_group`获取的,这里设置了授权之后,在需要判断当前用户或者某个用户是否有某些权限,可以使用`Access`模型的`getAuthNode`方法和`checkAuthNode`方法。详细用法在“用户管理”-“数据授权”章节查看。
### 按模型获取数据
以上说的是读取的数据在同一张表上,如果有些数据在另外一张表,那么就不好处理了。比如上面的例子,部门名称在另外一张表,那么用以上的方法就做不到了。
如果遇到这样的需求,可以设置模型名。
~~~
'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'Group'
],
],
~~~
这样配置的话,那你必须在你模块下有名为`Group`的模型文件,比如路径为:`\app\模块名\model\Group.php`
~~~
'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'User'
],
],
~~~
如果这样定义,那么必须存在`\app\模块名\model\User.php`这个文件。
除此之外,该模型下必须有一个特定的方法,方法名为`access`,你只需在这个方法返回你需要展示的数据即可。
>[info]这种方法灵活性比较大,可以随意查询数据,只要返回的数据中,有包含上面设置的三个字段名id、pid、name即可。
## action - 行为配置
用于定义行为规则,具体参数如下
* `module` 所属模块(必须)
* `name` 行为标识(同个模块内,不得重复)(必须)
* `title` 行为名称(必须)
* `remark` 行为描述(必须)
* `rule` 行为规则
* `log` 日志规则
* `status` 状态(0-禁用,1-启用)默认为禁用
~~~
'action' => [
[
'module' => 'cms',
'title' => '添加文章',
'remark' => '添加文章',
'name' => 'article_add',
'log' => '用户:[user|get_nickname] 在[time|format_time]添加了文章'
],
[
'module' => 'cms',
'name' => 'article_delete',
'title' => '删除文章',
'remark' => '删除文章',
'log' => '用户:[user|get_nickname] 在[time|format_time]删除了文章',
'status' => 1
],
],
~~~
## trigger - 触发器配置
针对模块参数配置(config)可设置触发器,指定某个表单项的值为某个值时显示某些表单项。
比如模块参数配置如下:
~~~
'config' => [
['text', 'appid', 'AppId', '应用ID,登录 微信公众平台 查看'],
['text', 'secret', 'AppSecret', '应用密钥,登录 微信公众平台 查看'],
['text', 'token', 'Token', '令牌,用于接口验证,登录 微信公众平台,在【基本配置】中设置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密钥,登录 微信公众平台,在【基本配置】中设置'],
]
~~~
我们希望当用户填写`appid`为`123`时才显示`secret`表单项,当`secret`填写`456`时才显示`token`和`aeskey`。
~~~
// 触发器
'trigger' => [
['appid', '123', 'secret'],
['secret', '456', 'token,aeskey']
]
~~~
具体用法请参考[设置触发器](设置触发器.md)章节。
- 序言
- 环境搭建
- 下载及安装
- 目录结构
- 快速构建器(ZBuilder)
- 表单(form)
- 设置页面标题
- 设置页提示信息
- 设置表单提交地址
- 隐藏按钮
- 添加按钮
- 设置按钮标题
- 添加表单项
- 复选
- 单选
- 日期
- 时间
- 开关
- 标签
- 数组
- 分组
- 范围
- 按钮
- 数字框
- 密码框
- 取色器
- 下拉菜单
- 普通联动
- 快速联动
- 拖拽排序
- 静态文本
- 格式文本
- 日期时间
- 日期范围
- 图片裁剪
- 百度地图
- 单文件上传
- 多文件上传
- 单图片上传
- 多图片上传
- 隐藏表单项
- 图标选择器
- 单行文本框
- 多行文本框
- 百度编辑器
- CKEditor编辑器
- wang编辑器
- markdown编辑器
- summernote编辑器
- 图片展示(1.1.0+)
- 单文件展示(1.1.0+)
- 多文件展示(1.1.0+)
- 下拉菜单Ajax(1.3.3+)
- 复杂表格(1.4.3+)
- 数据表格(1.4.3+)
- 分组下拉菜单(1.4.3+)
- 表格选取(1.4.3+)
- 穿梭框(1.4.3+)
- 添加表单项通用方法
- 直接设置表单项
- 表单布局
- 设置Tab按钮列表
- 设置表单数据
- 引入js文件
- 引入css文件
- 设置额外JS代码
- 设置额外CSS样式
- 设置额外HTML代码
- 是否ajax方式提交
- 设置模版路径
- 设置触发器
- 设置表单提交确认框
- 自定义表单项(1.0.6+)
- 设置表单提交方式(1.0.6+)
- 模板变量赋值(1.0.7+)
- 设置页面空表单项提示(1.0.7+)
- 自定义扩展表单图标(1.2.0+)
- 设置表单令牌(1.3.1+)
- 新窗口打开返回的url(1.4.4+)
- 表格(table)
- 设置页面标题
- 设置页面提示信息
- 添加一列
- 字段类型
- switch
- status
- yesno
- text.edit
- textarea.edit
- password
- url
- tel
- number
- icon
- byte
- date
- time
- datetime
- date.edit
- time.edit
- datetime.edit
- picture
- pictures
- select
- callback
- link
- text
- img_url
- files(1.1.1+)
- popover(1.4.4+)
- 添加多列
- 添加数量索引
- 添加快捷编辑的验证器
- 设置表格数据
- 隐藏第一列多选框
- 添加表头排序
- 添加表头筛选
- 添加表头筛选条件
- 添加时间段筛选
- 添加一个右侧按钮
- 添加多个右侧按钮
- 添加一个顶部按钮
- 添加多个顶部按钮
- 自动添加按钮
- 自动编辑按钮
- 替换右侧按钮
- 设置搜索参数
- 设置数据库表名
- 设置插件名称
- 设置表格主键
- 设置Tab按钮列表
- 设置分页
- 去除分页
- 引入js文件
- 引入css文件
- 设置额外JS代码
- 设置额外CSS样式
- 设置额外HTML代码
- 设置额外HTML代码-模板文件(1.4.0+)
- 设置模版路径
- 添加行class名
- 添加顶部下拉筛选
- 设置页面空数据提示(1.0.7+)
- 模板变量赋值(1.0.7+)
- 设置使用原始数据字段(1.0.8+)
- 设置搜索区域(1.1.0+)
- 设置表格高度(1.3.0+)
- 固定左列(1.3.0+)
- 固定右列(1.3.0+)
- 设置列宽(1.3.0+)
- 设置隐藏列(1.3.0+)
- 侧栏(aside)
- 添加区块
- 设置Tab按钮列表
- 追加Tab按钮列表
- 设置当前tab
- 设置单个tab内容
- 设置多个tab内容
- 追加tab内容
- 覆盖侧栏
- 模块开发
- 创建模块信息文件
- 安装模块
- 模块配置
- 控制器
- 创建菜单节点
- 第一个控制器
- 模块参数配置页面
- 方法参考
- 数据授权(1.3.2+)
- 插件开发
- 插件入口文件
- 插件基本信息
- 管理界面的字段信息
- 新增或编辑的字段信息
- 插件钩子
- 触发器
- 原数据库表前缀
- 插件配置信息
- 安装和卸载Sql文件
- 控制器
- 模型
- 验证器
- 视图
- 方法参考
- 实践教程
- 变量参考
- 函数参考
- 安全相关
- 常见问题
- 其他杂项
- 更新日志
- 升级指导
- 贡献名单
- 关于文档