多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 配置文件 插件配置文件用于给到用户自定义一些选项,用户安装后,可根据需要灵活配置你的插件。 目前支持text、textarea、radio、checkbox、select、image、images、date、datetime、array组件。 组件可前往这里了解:[字段类型与组件](%E5%89%8D%E8%A8%80.md) ## 配置后的效果 ![](https://img.kancloud.cn/c2/8e/c28e04b60cab5093e94592e01f2cab20_954x674.png) ## 文件路径 ``` addons ├─demo │ ├─Demo.php │ ├─config.php 配置文件 │ ├─info.ini ``` ![](https://img.kancloud.cn/36/8f/368f09fc59379c5e6ead638d6fdcfdec_188x211.png) ## 无标签页示例 ~~~ <?php return [ // 名称,保持唯一,获取时:$tmp['value1'] 即可获取value值。 'value1' => [ 'title' => '标题', // 标题 'type' => 'text', // 组件类型 'tips' => '提示', // 提示信息 'rules' => 'required;length(3~16)', // 验证规则,可参考字段类型与组件下的验证规则,多个规则;隔开 'error_tips'=>'值必须', // 错误的提示信息 'value' => '' // 默认值 ], 'value2' => [ 'title' => '描述', 'type' => 'textarea', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'value' => '' ], 'radio' => [ 'title' => '是否显示', 'type' => 'radio', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'options' => [ // 选项 '1' => '显示', '0' => '不显示' ], 'value' => '1' ], 'checkbox' => [ 'title' => '多项选择', 'type' => 'checkbox', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'options' => [ // key=>标题 '1' => '显示1', '2' => '显示3', '0' => '不显示' ], 'value' => '1,2' // 多选时英文逗号分隔,对应选项key值 ], 'select' => [ 'title' => '下拉选择', 'type' => 'select', 'tips' => '我是提示', 'rules' => '', 'error_tips'=>'', 'options' => [ '1' => '测试1', '2' => '测试2', '3' => '测试3' ], 'value' => '2' ], 'array1' => [ 'title' => '测试array组件', 'type' => 'array', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'data_list'=>[// 键值名称 'key'=>'标题', 'value'=>'值' ], 'value' => [ '标题1'=>'2'// 默认值 ] ], 'value5' => [ 'title' => '动态下拉url类型', 'type' => 'selectpage', // 动态下拉 'tips' => '', 'rules' => '', 'error_tips'=>'', 'data_list'=>[ 'type'=>'url',//链接地址类型 'url'=>'/cms.flags/index',//链接地址类型 'show-field'=>'title', // 显示字段 'key-field'=>'id',// 存储字段 'search-field'=>'title',// 搜索字段 'and-or'=>'',// 值为and、或者or,search-field为多个时,值为and时表示同时成立反之其中一个成立即可 'order-by'=>'',// 排序:id desc,view asc 'param'=>[ 'status'=>'normal' // 指定额外的条件 ], 'multiple'=>0,// 多选,1=开启,0=关闭 'pagination'=>0,// 分页,1=开启,0=关闭 'select-only'=>1,// 只读,1开启,0关闭 'enable-lang'=>1,// 启用多语言区分,1开启,0关闭 ], 'value' => '' ], 'value4' => [ 'title' => '动态下拉table类型', 'type' => 'selectpage', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'data_list'=>[ 'type'=>'table',// 数据源来自数据库表 'table'=>'flags',// flags表,不用写表前缀 'show-field'=>'title', 'key-field'=>'id', 'search-field'=>'title,name', 'and-or'=>'or', 'order-by'=>'id desc', 'param'=>[ 'status'=>'normal' ], 'multiple'=>1,// 多选,1=开启,0=关闭 'pagination'=>0,// 分页,1=开启,0=关闭 'select-only'=>0,// 只读,1开启,0关闭 'enable-lang'=>1,// 启用多语言区分,1开启,0关闭 ], 'value' => '' ], ]; ~~~ 效果图 ![](https://img.kancloud.cn/7c/06/7c06f516d55ea795d0556b5a8b7f050e_780x445.png) 如果配置项过多,可以使用下面方式,生成标签页 ## 标签页分组示例 使用标签页布局时,获取的配置结构是不一样的。 ~~~ return [ // 自定义名称,获取:$tmp['base']['value1'] 'base'=>[ // 标签页标题 'title' => '基础配置', 'item' => [ // 标签页包含的配置项 'value1' => [ 'title' => '标题', 'type' => 'text', 'tips' => '提示', 'rules' => 'required;length(3~16)', 'error_tips'=>'值必须', 'value' => '' ], 'value2' => [ 'title' => '描述', 'type' => 'textarea', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'value' => '' ], 'radio' => [ 'title' => '是否显示', 'type' => 'radio', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'options' => [ '1' => '显示', '0' => '不显示' ], 'value' => '1' ], 'checkbox' => [ 'title' => '多项选择', 'type' => 'checkbox', 'tips' => '', 'rules' => '', 'error_tips'=>'', 'options' => [ '1' => '显示1', '2' => '显示3', '0' => '不显示' ], 'value' => '1,2' ], 'select' => [ 'title' => '下拉选择', 'type' => 'select', 'tips' => '我是提示', 'rules' => '', 'error_tips'=>'', 'options' => [ '1' => '测试1', '2' => '测试2', '3' => '测试3' ], 'value' => '2' ], 'selects' => [ 'title' => '下拉多项选择', 'type' => 'selects', 'tips' => '我是提示', 'rules' => '', 'error_tips'=>'', 'options' => [ '1' => '测试1', '2' => '测试2', '3' => '测试3' ], 'value' => '2,3' ] ] ], 'more'=>[ 'title'=>'更多选项', 'item'=>[ 'image' => [ 'title' => '图片', 'type' => 'image', 'tips' => '请上传图片', 'rules' => 'required', 'error_tips'=>'请上传图片', 'value' => '' ], 'images' => [ 'title' => '图片', 'type' => 'images', 'tips' => '请上传图片', 'rules' => 'required', 'error_tips'=>'请上传图片', 'max_number'=>5, 'value' => '' ], 'date' => [ 'title' => '日期', 'type' => 'date', 'tips' => '', 'rules' => 'required', 'error_tips'=>'日期选择', 'value' => '' ], 'datetime' => [ 'title' => '日期时间', 'type' => 'datetime', 'tips' => '日期时间', 'rules' => '', 'error_tips'=>'日期时间', 'value' => '' ] ] ] ]; ~~~ 效果 ![](https://img.kancloud.cn/e2/91/e2911da917fbfff236c175c9b3fa508b_781x499.png) ## 获取插件配置 ~~~ /** * $type = 'template' 表示模板应用,$type='addon' 表示插件应用 * $name 插件标识名称 * $module 模板应用会用到,用于确定获取后台模板配置、或前台模板、或其他模块的模板。 * $complete true-表示获取所有结构数组,false-表示获取配置值 */ get_addons_config($type, $name, $module, $complete) // 例如获取demo插件配置 get_addons_config('addon','demo'); ~~~ ## 自定义配置页 如果系统自带的配置页,满足不了你的需求时,您可以自定义配置页,只需在自己的插件目录新建config.html即可。 ![](https://img.kancloud.cn/04/6a/046a1e441dbca5a46c7a0893ec438fbe_426x184.png) 在html页面获取的变量有:`$sdata` 里面的值结构就是你写的配置文件结构,你可参考默认的表单生成文件`template/admin/adminlte/appcenter/field.html`。 打印输出: ~~~ <?php dump($sdata);?> ~~~ ![](https://img.kancloud.cn/91/c1/91c1d2024360a3a057793e7d3cef7f22_270x224.png) > 提示:若对自定义配置页仍有疑问,欢迎前往Q群咨询。