- 🏠 简介
- 🔌 api接口
-
🔧 插件开发
- 介绍
- 插件优势
- 新建插件
- 技术栈
- 插件开发规范
- 插件目录结构
- model 层开发
- service 层开发
- api 接口开发
- menu 菜单开发
-
event 事件钩子开发
- 开发指南
- 常用事件
- SiteInit 站点初始化事件
- AddSiteAfter 站点创建后事件
- MemberRegister 会员注册后事件
- MemberLogin 会员登录后事件
- PayCreate 支付创建事件
- PaySuccess 支付成功事件
- RefundSuccess 退款成功事件
- TransferSuccess 转账成功事件
- BottomNavigation 底部导航事件
- NoticeData 消息模板数据内容事件
- GetQrcodeOfChannel 创建二维码事件
- ExportDataType 导出数据类型事件
- ExportData 导出数据源事件
- GetPosterType 海报类型事件
- GetPosterData 海报数据事件
- ShowCustomer 应用管理加载事件
- GetWechatTransferTradeScene 微信支付转账场景事件
- ThemeColor 主题风格事件
- initWap 手机端初始化加载事件
- dict 数据字典开发
- layout 自定义布局开发
- job 消息队列和计划任务开发
- notice 消息发送开发
- printer 小票打印模板开发
- export 数据导出开发
- diy 自定义组件/页面装修开发
- diy 自定义表单组件开发
- poster 自定义海报开发
- icon 引入图标
- 支付方式开发
- upgrade 插件版本升级
- 打包插件
- 授权信息变更回调通知
- 官网上架
- 📝 二次开发须知
- 👨💻 二次开发指导
-
🎬 二次开发应用插件视频教程
- 二次开发安装视频教程
- 准备工作与创建插件
- 插件目录整体说明
- 插件admin目录
- 插件app目录说明(adminapi、api、验证器)
- 插件app目录(dict、job)
- 插件app目录说明(lang、listener)
- 插件app目录说明(model、service)
- 插件uniapp目录说明
- 插件开发之后台功能开发(代码生成器)
- 插件开发之uniapp功能开发(api)第一节
- 插件开发之uniapp功能开发(api)第二节
- 插件开发之uniapp功能开发(api)第三节
- 插件安装与打包原理
- 消息队列开发
- 计划任务开发
- DIY组件和自定义页面装修开发
- 支付接口开发
- 插件升级包打包流程以及云编译功能
event 事件钩子开发指南
事件钩子概述
事件钩子是一种回调机制,允许插件在系统特定事件发生时执行自定义逻辑。通过事件钩子,插件可以在不修改核心代码的情况下,对系统行为进行扩展和定制。降低系统的耦合性的同时,也降低了BUG的可能性。
事件钩子的主要作用:
-
实现插件与系统的解耦
-
允许插件对系统行为进行扩展
-
提供标准化的扩展点,便于插件开发
-
支持多个插件同时响应同一事件
定义事件
<?php
return [
'bind' => [
// todo 定义事件绑定
],
'listen' => [
// todo 定义事件监听
],
'subscribe' => [
// todo 定义事件订阅
]
];

命名规范
事件键关键字名称
事件键名通常使用大写驼峰命名法,用于标识特定的事件类型。可以根据事件的操作,增加 After、Before、Success等后缀。例如:
-
SiteInit:站点初始化事件 -
AddSiteAfter:站点创建后事件 -
MemberRegister:会员注册事件
具体某个事件名称
建议以Listener结尾,例如:
-
SiteInitListener:站点初始化事件监听 -
AddSiteAfterListener:站点创建后事件监听 -
MemberRegisterListener:会员注册事件监听

调用事件
在系统或插件代码中,可以通过以下方式触发事件:
// 触发事件并获取结果
$result = event('AddSiteAfter', $data);
// 触发事件但不关心结果
event('AddSiteAfter', $data);
事件名称:AddSiteAfter,表示「站点添加后」这一事件点。
事件参数(可选):$data,传递给事件监听器的数据,包含站点添加后的相关信息。通常是一个关联数组。
插件定义event事件钩子的文件位置
插件的事件钩子配置文件位于:
niucloud/addon/[插件名称]/app/event.php
例如hello_world插件,具体路径为:
niucloud/addon/hello_world/app/event.php

开发者可以根据自身插件的业务需求,编写事件监听。
在listener目录下开发事件钩子的具体业务代码
文件位于:
niucloud/addon/[插件名称]/app/listener/
例如hello_world插件,具体路径为:
niucloud/addon/hello_world/app/listener/AddSiteAfterListener.php

框架定义event事件钩子的文件位置
框架会定义一些公共、常用、全局可扩展的事件钩子,插件可以进行实现。框架的事件钩子配置文件位于:
niucloud/app/event.php
