Skip to content

钩子事件

钩子(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钩子名称,可以阅读相关代码。