业务系统开发文档>图形验证码插件开发文档
一、位置插件放在\public\plugins\captcha\目录下 二、目录结构\plugins\captcha\tp_captcha|--- controller(控制器目录,实现接口)|--- TpCaptcha.php(插件主文件)|--- config.php(配置项客户配置项,在插件设置中显示)|--- route.php(路由文件) 三、开发流程以thinkphp图形验证码为例:1、创建工单插件目录\public\plugins\captcha\tp_captcha\;①目录名以小写字母+下划线形式,必须以字母开头,如tp_captcha; 2、创建入口文件:TpCaptcha.php:①命名空间namespace captcha\tp_captcha(控制器下命名空间对应相应目录即可,其它同理);②以目录名大驼峰+.php,创建在插件根目录下,如tp_captcha\TpCaptcha.php;③文件中需要定义info属性,示例:# 插件基本信息public $info = array( 'name' => 'TpCaptcha', //插件英文名,作为插件唯一标识,改成你的插件英文就行了 'title' => 'thinkphp图形验证码', //插件名称 'description' => 'thinkphp图形验证码', //插件描述 'author' => 智简魔方, //开发者 'version' => '1.0', // 版本号);④必须实现install()安装以及uninstall()卸载方法⑤获取前台验证码,需实现方法:插件名+Describe,如TpCaptchaDescribe(),返回html;⑥获取后台验证码,需实现方法:插件名+DescribeAdmin,如TpCaptchaDescribeAdmin(),返回html;⑦需实现验证方法:插件名+Verify,如TpCaptchaVerigy($param),系统会传递默认参数至此方法,参数为⑨中验证成功后传递给系统js方法captchaCheckSuccsss()。参数:$param = [ “captcha” => ‘test’, // 验证码 “token” => ‘adfhaksdf’, // 唯一识别码];返回:status:200成功,400失败msg:消息⑧在⑤和⑥中,如果系统未加载js,可设置定时操作;⑨验证成功或失败后可调用系统js:captchaCheckSuccsss(bol,captcha,token,login)参数:bol 是否成功 boolcaptcha 验证码 stringtoken 唯一识别码 stringlogin 后台是否直接登录 bool ⑩取消系统弹框captchaCheckCancel() 3、确定是否需要后台配置文件,如果需要,在接口根目录下加上config.php,示例:<?php/** * @desc 插件后台配置 * @author wyh * @version 1.0 * @time 2022-05-27 */return [ 'module_name' => [ # 在后台插件配置表单中的键名(统一规范:小写+下划线),会是config[module_name] 'title' => '名称', # 表单的label标题 'type' => 'text', # 表单的类型:text文本,password密码,checkbox复选框,select下拉,radio单选,textarea文本区域,tip提示 'value' => 'thinkphp图形验证', # 表单的默认值 'tip' => 'friendly name', # 表单的帮助提示 'size' => 200, # 输入框长度(当type类型为text,password,textarea,tip时,可传入此键) ], 'captcha_width' => [ 'title' => '验证码宽度', 'type' => 'text', 'value' => 250, 'tip' => '', 'size' => 200, ], 'captcha_height' => [ 'title' => '验证码高度', 'type' => 'text', 'value' => 61, 'tip' => '', 'size' => 200, ], 'captcha_length' => [ 'title' => '验证码长度', 'type' => 'text', 'value' => 4, 'tip' => '', 'size' => 200, ], /*'code_set' => [ 'title' => '验证码字符集', 'type' => 'text', 'value' => '1234567890', 'tip' => '', 'size' => 200, ],*/]; 4、外部访问:创建插件后台控制器 tp_captcha\controller\IndexController.php①命名空间captcha\tp_captcha\controller;②继承后基类控制器app\home\controller\BaseController;③实现接口,如public function refresh(),系统默认访问此接口的url为:/captcha/tp_captcha/index/refresh;(/captcha/插件/控制器/方法)④自定义路由,创建route.php文件:<?php/** * 插件自定义路由,此文档作为范例,注意不要和系统路由产生冲突 * 说明:官方默认路由需要登录后才能访问,若需要免登录访问,需要自定义路由. * 默认路由,后台:/admin/addon?_plugin=demo_style&_controller=admin_index&_action=addhelp; * 前台:/console/addon?_plugin=demo_style&_controller=admin_index&_action=addhelp * @author wyh * @time 2022-06-02 */use think\facade\Route;# 不需要登录Route::get('country1', 'home/common/countryList'); ⑤跨域设置$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';Route::get('country4', 'home/common/countryList') ->allowCrossDomain([ 'Access-Control-Allow-Origin' => $origin, 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Max-Age' => 600, ]); 四、示例具体可参考public\plugins\captcha\tp_captcha\