钩子事件
钩子(HOOK)是为了在系统中添加自定义的代码逻辑,以满足不同的业务需求。
在多应用的系统中,它可以跨应用进行执行。
钩子列表
以下为X-APPLY(CMS)内置的HOOK:
钩子名称 | 描述 | 参数 |
---|---|---|
DashboardWidget | 后台首页统计Card组件的显示 | 无 |
DashboardContent | 后台首页列表数据组件的显示 | 无 |
CleanCache | 清除系统缓存 | 无 |
UploadFile | 附件上传 | 上传成功后的数据对象 |
放置钩子
在你需要放置控制器的代码中,使用 $this->trigger
方法:
php
public function testTrigger()
{
//...
$this->trigger('MyTestHook'); // 无参数
$this->trigger('MyTestHook', ['id' => 1]); // 带参数, 以数组方式
//...
}
执行钩子
如何编辑钩子事件的代码,首页需要在应用的config/menu.php
中绑定。
如果我的应用为test
:
php
<?php
// 菜单
return [
//...
'events' => [
'UploadFile' => ['\app\test\events\Upload@handle'],
]
]
然后需要在app/test/events/Upload.php
中编写代码:
php
<?php
namespace app\test\events;
use think\facade\Config;
class Upload
{
public function handle($data)
{
// $data 为上传成功后的数据对象
$id = $data->id; // 文件ID
$path = Config::get('filesystem.disks.public.root') . '/';
$file = $path.$data->url; // 文件绝对路径
//...
// 可以根据需要处理你的逻辑代码
//...
}
}
快速查找$this->trigger
或钩子名称
,可以阅读相关代码。