>[danger] 注意:所有插件的数据表命名格式必须为:cowcms_插件模块名_数据表名称,比如模块为admin,数据表名称为menu,创建数据表最终的名称为:cowcms_admin_menu。
>
插件的开发和THINKPHP模块的开发基本没什么区别,唯一的区别就是插件模块中多了一个exec的目录。
>[info]exec目录展示
>
~~~
application 模块的总目录
│ ├─common 公共模块目录(可选)
│ ├─module1 模块目录
│ │ ├─exec 操作执行目录
│ │ │ ├─install 安装模块执行目录
│ │ │ │ ├─sql sql文件目录,在该目录中的sql文件,在安装模块被执行
│ │ │ │ ├─exec.php 在模块安装时执行该文件
│ │ │ ├─uninstall 卸载模块执行目录
│ │ │ │ ├─exec.php 在模块卸载时执行该文件
│ │ │ ├─update 更新目录执行目录
│ │ │ │ ├─sql sql文件目录,在该目录中的sql文件,在模块时被执行
│ │ │ │ ├─exec.php 在模块更新时执行该文件
│ │ │ ├─config.php 模块配置文件
│ │ │ ├─tables.php 数据表文件,在安装时根据执行的sql文件保存sql文件中创建的数据表
│ │ │ ├─auth.php 安装时加入的权限规则表
│ │ │ ├─menu.php 安装时加入的菜单列表
│ │ │ ├─event.php 安装时关联的碎片功能
│ │ └─ ... 更多类库目录
~~~
>[info] config.php---模块的配置文件
>
~~~php
[
'name' =>'文章系统', //模块名称
'author'=>'COWCMS', //开发作者
'version'=>'5.1.1', //模块版本号
'qq'=>'360881323', //开发者QQ号
'web'=>'//open.cowcms.com', //开发者个人主页
'sign'=>'gQrr7uc0eP7GX0rtLTcqoazmOOUk9h0rcAow', //是模块的唯一标识吗 32为字符
'describe'=>'COWCMS插件是一个插件库', //模块功能描述
]
~~~
>[danger]特别注意:config.php文件中的 【sign】值,该值是每个模块对应的一个唯一的标识码,一个32为的字符串
>
* [ ] 【功能作用】是实现在线更新功能,此值为空的模块不支持在线更新。
* [ ] 【获取方法】在 //open.cowcms.com 网站上注册会员,添加插件后,管理员审核通过,会在会员中心找到该 【sign】的值。
![](https://box.kancloud.cn/bb6642feb47ede35bf19ffff939db409_1531x236.jpg)
>[info] exec.php---模块执行文件,在模块执行 安装,更新,卸载操作的时候,都会执行其对应目录下的exec.php文件和sql目录下的sql文件。
>
模块安装时:要执行--install 目录下的exec.php文件,以及sql目录下的sql文件
模块卸载时:要执行--uninstall 目录下的exec.php文件,以及sql目录下的sql文件
模块更新时:要执行--update 目录下的exec.php文件,以及sql目录下的sql文件
>[info] 执行文件 exec.php,在这个文件中预设了几个执行函数
>
~~~php
//在执行安装,卸载,更新时,提交的表单数据
// $module_name 当前执行的模块名
$this->field = function($module_name){
$fields=[
[
'name'=>"username",//字段名称
'title'=>"用户名",//字段别名
'verify'=>"required",//表单验证(支持text|textarea),多个用|隔开 required(必填项) phone(手机号)email(邮箱)url(网址)number(数字)date(日期)identity(身份证)
'type'=>"text",//表单类型 可选 text|select|checkbox|radio|textarea
'value'=>"admin",//表单默认值 在(text|textarea)表单类型值为字符串,在(select|checkbox|radio) 表单类型值为默认选择的索引,在checkbox表单类型,默认值可以为数组
'option'=>"",// 在(checkbox|select|radio)表单类型 该字段有效,格式为text=value|text=value
'placeholder'=>''//placeholder值,对(text|textarea)表单类型有效
]
];
return $fields;
};
//在执行安装,卸载,更新时,如果field函数返回了字段且有表单数据被提交会执行此函数
// $module_name 当前执行的模块名
// $data field函数中产生的表单提交过来的数据
$this->form = function($module_name,$data){
return $data;
};
//在执行安装,卸载,更新之前要执行该函数
// $module_name 当前执行的模块名
// $data form函数中反回来的数据
$this->begin = function($module_name,$data){
return $data;
};
//在执行安装,更新时,如果有sql文件,在执行sql文件前会执行此函数
// $module_name 当前执行的模块名
// $data form函数中反回来的数据
// $param 前边函数返回的值 $param['begin'] :begin函数返回的值
$this->sqlBegin = function($module_name,$data,$param){
return $data;
};
//在执行安装,更新时,如果有sql文件,在执行sql文件完成后会执行此函数
// $module_name 当前执行的模块名
// $data form函数中反回来的数据
// $param 前边函数返回的值 $param['begin'] :begin函数返回的值,$param['sqlBegin'] :sqlBegin函数返回的值
$this->sqlEnd = function($module_name,$data,$param){
return $data;
};
//在执行安装,卸载,更新完成后会执行此函数
// $module_name 当前执行的模块名
// $data form函数中反回来的数据
// $param 前边函数返回的值 $param['begin'] :begin函数返回的值,$param['sqlBegin'] :sqlBegin函数返回的值,$param['sqlEnd'] :sqlEnd函数返回的值
$this->finish = function($module_name,$data,$param){
return $data;
};
~~~
>[info] 执行文件 exec.php中 $this->field函数中字段设置效果,如
>
~~~php
$this->field = function($module_name){
$fields=[
[
'name'=>"username",//字段名称
'title'=>"用户名",//字段别名
'verify'=>"required",//表单验证(支持text|textarea),多个用|隔开 required(必填项) phone(手机号)email(邮箱)url(网址)number(数字)date(日期)identity(身份证)
'type'=>"text",//表单类型 可选 text|select|checkbox|radio|textarea
'value'=>"admin",//表单默认值 在(text|textarea)表单类型值为字符串,在(select|checkbox|radio) 表单类型值为默认选择的索引,在checkbox表单类型,默认值可以为数组
'option'=>"",// 在(checkbox|select|radio)表单类型 该字段有效,格式为text=value|text=value
'placeholder'=>''//placeholder值,对(text|textarea)表单类型有效
],
[
'name'=>"group_1",//字段名称
'title'=>"会员组1",//字段别名
'verify'=>"required",//表单验证(支持text|textarea),多个用|隔开 required(必填项) phone(手机号)email(邮箱)url(网址)number(数字)date(日期)identity(身份证)
'type'=>"select",//表单类型 可选 text|select|checkbox|radio|textarea
'value'=>"2",//表单默认值 在(text|textarea)表单类型值为字符串,在(select|checkbox|radio) 表单类型值为默认选择的索引,在checkbox表单类型,默认值可以为数组
'option'=>"普通会员=10|高级会员=11|合作会员=12",// 在(checkbox|select|radio)表单类型 该字段有效,格式为text=value|text=value
'placeholder'=>''//placeholder值,对(text|textarea)表单类型有效
],
[
'name'=>"group_2",//字段名称
'title'=>"会员组2",//字段别名
'verify'=>"required",//表单验证(支持text|textarea),多个用|隔开 required(必填项) phone(手机号)email(邮箱)url(网址)number(数字)date(日期)identity(身份证)
'type'=>"radio",//表单类型 可选 text|select|checkbox|radio|textarea
'value'=>"2",//表单默认值 在(text|textarea)表单类型值为字符串,在(select|checkbox|radio) 表单类型值为默认选择的索引,在checkbox表单类型,默认值可以为数组
'option'=>"普通会员=10|高级会员=11|合作会员=12",// 在(checkbox|select|radio)表单类型 该字段有效,格式为text=value|text=value
'placeholder'=>''//placeholder值,对(text|textarea)表单类型有效
],
[
'name'=>"group_3",//字段名称
'title'=>"会员组3",//字段别名
'verify'=>"required",//表单验证(支持text|textarea),多个用|隔开 required(必填项) phone(手机号)email(邮箱)url(网址)number(数字)date(日期)identity(身份证)
'type'=>"checkbox",//表单类型 可选 text|select|checkbox|radio|textarea
'value'=>"2",//表单默认值 在(text|textarea)表单类型值为字符串,在(select|checkbox|radio) 表单类型值为默认选择的索引,在checkbox表单类型,默认值可以为数组
'option'=>"普通会员=10|高级会员=11|合作会员=12",// 在(checkbox|select|radio)表单类型 该字段有效,格式为text=value|text=value
'placeholder'=>''//placeholder值,对(text|textarea)表单类型有效
]
];
return $fields;
};
~~~
![](https://box.kancloud.cn/70eb110f919a686e7d804f8466e20932_968x730.jpg)
- 序言
- 基础
- 源码包
- 核心包
- 完整包
- 系统模块
- 安装模块
- 后台模块
- 插件模块
- 插件开发
- 开发基础
- 权限开发
- 菜单开发
- 开发调试
- 碎片开发
- 碎片钩子预设表
- 插件说明
- 字段插件
- 插件介绍
- 字段使用
- 单行文本
- 多行文本
- 选项-下拉
- 选项-复选
- 选项-单选
- 选项-滑块
- 颜色选择器
- 星级评分
- 日期时间
- 文件上传
- 编辑器
- API接口
- 微信插件
- 微信配置
- 公众号配置
- 支付配置
- 微信支付使用
- API类库
- 红包发放
- 付款到零钱
- 碎片
- 公众号碎片
- 红包碎片
- 付款到零钱碎片
- API微信接口
- 支付宝插件
- 支付宝配置
- 支付宝支付使用
- api接口
- api接口后端开发
- api接口前端使用
- API参数接口
- 会员插件
- 登录使用
- 会员碎片
- API会员接口
- API注册接口
- 积分插件
- 积分设置
- 积分碎片
- API积分接口
- API提现接口
- API兑换接口
- API充值接口
- 订单
- 订单碎片
- API订单接口
- 商城
- 商城钩子
- API商城接口
- API商城会员接口
- 签到
- 签到设置
- 签到碎片
- API签到接口
- 上传
- 上传设置
- 上传JS接口
- 推广插件
- 海报设置
- API海报接口
- 文章插件
- 文章设置
- 文章钩子
- API文章接口
- API文章会员接口
- 管理员
- 管理员碎片
- 站内信
- API站内信接口
- 杂项
- 菜单
- 菜单设置
- API菜单接口
- 错误码
- 支付碎片
- 支付
- 充值
- 购买会员组
- 购买产品