插件钩子
本框架的插件钩子,请采用驼峰法函数的方式去编写,首字母小写,
以下是系统默认自带的一些钩子,有一些是预留的,请勿使用;
序号 | 钩子 | 类型 | 描述 |
---|---|---|---|
1 | apiAuth | 插件 | API插件鉴权钩子,插件独占 |
2 | userLoginSuccess | 系统 | 用户登录成功触发钩子 |
3 | cmsHotSearch | 插件 | CMS热词搜索插件,插件独占 |
4 | cmscategoryPermissions | 插件 | CMS栏目权限插件,插件独占 |
5 | smsMsgSend | 系统 | 短信发送的钩子,用于阿里云/腾讯云短信发送 |
6 | uploadFileAfter | 系统 | 附件上传后执行的钩子 |
7 | uploadFileMultipart | 系统 | 大文件分片上传/每个分片上传后 |
8 | adminLoginError | 系统 | 后台管理员登录错误 |
9 | adminLoginSuccess | 系统 | 后台管理员登录成功/可以对接微信公众号提醒 |
10 | userLoginError | 系统 | 用户登录成功触发钩子 |
以上钩子中,系统的钩子可以编写插件进行数据的调用执行/返回,插件独占的钩子是专为官方开发插件预留的
如果以上的钩子不满足你的需求,可以加群68221484提交反馈,我们可以增加一些你业务上常用的钩子/事件
使用事件时在 Worker.php
中添加上对应的方法,在安装时、禁用、启用即可自动注册行为。但一定请注意在 Worker.php
中编写事件访问为 public
类型
监听事件
当前以工单管理系统
为例,文件路径在/plugin/worker/Worker.php
,文件内容如下
<?php
namespace plugin\worker;
use app\PluginController;
/**
*
*/
class Worker extends PluginController
{
/**
* 插件安装方法
* @return bool
*/
public function install(): bool
{
return true;
}
/**
* 插件卸载方法
* @return bool
*/
public function uninstall(): bool
{
return true;
}
/**
* 插件启用方法
* @return bool
*/
public function enabled(): bool
{
return true;
}
/**
* 插件禁用方法
* @return bool
*/
public function disabled(): bool
{
return true;
}
/**
* 文件上传事件
* @param $param
* @return void
*/
public function uploadFileAfter($param)
{
// TODO ..
}
}
uploadFileAfter
事件钩子,这样在初始化的时候,框架会监听这个钩子的调用,其实你就把他理解为一个插槽
当用户需要的时候,会去检查这个钩子是否存在,如果存在则执行这个函数。
触发事件
我们拿当前这个上传函数的事件来举例说明,当前框架已经监听到这个事件了,那么要如何触发?
例如:用户头像上传后,我们需要上传至阿里云等附件存储空间,那么则需要这样去触发事件来执行,
/**
* 用户头像上传
* @param object $file
* @return array|false
*/
public function avatar(object $file)
{
$this->getFileSavePath($file, 'avatars');
if (!$file->move($this->filepath, $this->filename)) {
$this->setError('请检查服务器读写权限!');
return false;
}
$this->Images->thumb($this->filepath, $this->filename, $this->config, true);
Event::emit('uploadFileAfter', [
'fileName' => $this->filename,
'resource' => $this->resource
]);
$this->uploadAfterDelete();
return $this->success('文件上传成功!', $this->resource);
}
触发事件执行的方式有很多,但基本上最后执行的都是一样的,所以请统一使用Event::emit
触发即可
常见问题
最后更新时间:2022-12-02 17:34:011314 https://doc.swiftadmin.net/developer/53.html