## 钩子的约束
每个插件钩子文件必须继承公共的插件控制器``app\common\controller\Plugins``,插件里面必须要有以下四个方法:
~~~
/**
* 安装前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function install()
{
// 在此写业务代码,没有可不写
return true;
}
/**
* 安装后的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function installAfter()
{
// 在此写业务代码,没有可不写
return true;
}
/**
* 卸载前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstall()
{
// 在此写业务代码,没有可不写
return true;
}
/**
* 卸载后的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstallAfter()
{
// 在此写业务代码,没有可不写
return true;
}
~~~
## 插件钩子的添加与实现方法
>[info] 插件钩子的索引变量名为 $hooks
~~~
/**
* @var array 插件钩子索引
* 插件安装后,新添加的钩子方法需要重装插件才会生效
*/
public $hooks = [
// 钩子名称 => 钩子说明【系统钩子,说明不用填写】
'system_admin_tips',// 这是系统默认预埋的钩子,可删除
];
~~~
~~~
/**
* @var array 插件钩子索引
* 插件安装后,新添加的钩子方法需要重装插件才会生效
*/
public $hooks = [
// 钩子名称 => 钩子说明【系统钩子,说明不用填写】
'system_admin_tips',// 这是系统默认预埋的钩子,你可以删除
];
/**
* system_admin_tips钩子方法
* @param $params
*/
public function systemAdminTips(&$params)
{
echo '我是系统预埋的钩子';
}
~~~
>[info] 自定义钩子example_hook
~~~
/**
* @var array 插件钩子索引
* 插件安装后,新添加的钩子方法需要重装插件才会生效
*/
public $hooks = [
// 钩子名称 => 钩子说明【系统钩子,说明不用填写】
'example_hook' => '这是一个扩展的自定义钩子',
];
/**
* example_hook钩子方法
* @param $params
*/
public function exampleHook(&$params)
{
$str = '我是一个自定义钩子';
// 【示例】直接输出字符串
echo $str;
// 【示例】模板赋值并输出模板
$this->assign('str', $str);
// 模板文件完整路径:/plugins/test/view/widget/example_hook.php
return $this->fetch('example_hook');
}
~~~
>[info] 钩子的调用方法:runhook('example_hook')
>带参数调用:runhook('example_hook', ['param1'=> '参数1', 'param2'=> '参数2'])
- 序言
- 环境配置
- 下载及安装
- 目录结构
- 系统配置
- 多语言
- 命令行(pro版)
- 自动生成模块或插件(build)
- 生成模块
- 生成插件
- 自动生成增删改查(crud)
- 第一步:创建数据表
- 第二步:使用crud指令生成
- 自动生成类库文件(make)
- 生成控制器文件(make:controller)
- 生成模型文件(make:model)
- 生成逻辑文件(make:logic)
- 生成服务文件(make:service)
- 生成验证器文件(make:validate)
- 构建器(pro版)
- 表单构建器(form)
- 表单属性设置
- 添加表单项
- 文本框(text)
- 隐藏域(hidden)
- 密码框(password)
- 文本域(textarea)
- 单文件(file)
- 多文件(files)
- 单图(image)
- 多图(images)
- 开关(switch)
- 单选(radio)
- 多选(checkbox)
- 下拉框(select)
- 标签(tag)
- 日期时间(datetime)
- 颜色选择器(color)
- 富文本编辑器(editor)
- 滑块(slider)
- 评分(rate)
- 穿梭框(transfer)
- 进度条(progress)
- 树形(tree)
- 联动(linkage)
- 自定义html(html)
- 分隔线(line)
- 文字(txt)
- 下拉框增强版(select+)
- 数据表格(table)
- 添加表单分组(group)
- 栅格布局(grid)
- 触发器(trigger)
- 通用上传方法
- 表格构建器(table)
- 表格基础配置
- 添加表头工具栏
- 添加表格筛选
- 页面提示(pageTips)
- 引入 JS 文件
- 引入 CSS 文件
- 渲染额外 JS 代码
- 渲染额外 CSS 代码
- 模块开发
- 1.生成模块
- 2.创建菜单
- 3.创建控制器
- 后台通用方法
- 插件开发
- 1.新建插件
- 2.插件配置
- 3.插件控制器
- 4.插件模板
- 5.插件钩子
- 模板替换变量
- 公共函数库
- 后台通用JS方法
- 常见问题
- 官方模块
- CMS内容管理模块
- 目录结构
- 模板标签
- API接口
- 栏目页/内容页
- 小程序发布
- 官方插件
- 第三方登录
- excel插件
- 万能采集
- 采集规则
- 采集内容