行为事件
FastAdmin中的行为支持ThinkPHP5的所有行为,同时FastAdmin自定义部分专属的行为事件,以下是所有支持的行为事件
行为列表
| 标签位 | 描述 | 类型说明 |
|---|---|---|
| app_init | 应用初始化标签位 | 系统 |
| app_begin | 应用开始标签位 | 系统 |
| module_init | 模块初始化标签位 | 系统 |
| action_begin | 控制器开始标签位 | 系统 |
| view_filter | 视图输出过滤标签位 | 系统 |
| app_end | 应用结束标签位 | 系统 |
| log_write | 日志write方法标签位 | 系统 |
| log_write_done | 日志写入完成标签位 | 系统 |
| response_end | 输出结束标签位 | 系统 |
| response_send | 响应发送标签位 | 系统 |
| upload_after | 上传成功标签位 | FastAdmin |
| login_init | 登录标签位 | FastAdmin |
| wipecache_after | 清除缓存后标签位 | FastAdmin |
| admin_nologin | 管理员未登录标签位 | FastAdmin |
| admin_nopermission | 管理员无权限标签位 | FastAdmin |
| upload_config_init | 上传配置标签位 | FastAdmin |
| config_init | 系统配置标签位 | FastAdmin |
| user_sidenav_before | 会员中心边栏视图前标签位 | FastAdmin |
| user_sidenav_after | 会员中心边栏视图后标签位 | FastAdmin |
使用行为时在Mydemo.php中添加上对应的方法,FastAdmin在安装时、禁用、启用即可自动注册行为。但一定请注意在Mydemo.php中编写行为方法使用的是驼峰式规则,例如upload_after,方法名则为uploadAfter,如果方法名使用upload_after则不会注册成功。
示例代码
<?php
namespace addons\mydemo;
use app\common\library\Menu;
use think\Addons;
/**
* Mydemo插件
*/
class Mydemo extends Addons
{
// 插件安装方法
public function install()
{
}
// 插件卸载方法
public function uninstall()
{
}
// 插件启用方法
public function enable()
{
}
// 插件禁用方法
public function disable()
{
}
// 插件升级方法
public function upgrade()
{
}
/**
* 应用初始化的行为事件
*/
public function appInit()
{
return true;
}
/**
* 上传成功后的行为事件
*/
public function uploadAfter()
{
return true;
}
/**
* Mydemo插件的自定义行为事件
* 自定义行为事件必须以插件标识开头
*/
public function mydemoCustomAfter($params)
{
return true;
}
}监听行为
在FastAdmin中可以使用\think\Hook::listen来监听行为
\think\Hook::listen("upload_after", $attachment);以上代码位于application/admin/controller/Ajax.php第135行。因此我们在Mydemo.php中的uploadAfter会被触发。
插件自定义的行为事件,我们也需要在插件开发的过程中添加监听行为,如
\think\Hook::listen("mydemo_custom_after", $params);触发行为
如果在特殊情况下我们需要手动触发行为,我们可以使用\think\Hook::exec("upload_after", $attachment);来手动触发行为,并获得返回值。
常见问题
特别注意
如果我们在Mydemo.php中定义了行为并生效了,后续又删除了Mydemo.php中的行为代码,此归会导致整个框架都无法找到插件的行为方法,此时我们需要手动删除application/extra/addons.php中hooks节点相应的行为配置,移除相关的配置即可。
文档最后更新时间:2025-09-01 10:23:29
著作权归应用插件开发者所有,未经许可,禁止转载、复制此文档的任何内容。
未解决你的问题?请到「问答社区」反馈你遇到的问题