## 行为事件
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 |
使用行为时在`Mydemo.php`中添加上对应的方法,FastAdmin在安装时、禁用、启用即可自动注册行为。但一定请注意在`Mydemo.php`中编写行为方法使用的是驼峰式规则,例如`upload_after`,方法名则为`uploadAfter`,如果方法名使用`upload_after`则不会注册成功。
## 监听行为
在FastAdmin中可以使用`\think\Hook::listen`来监听行为
~~~scss
\think\Hook::listen("upload_after", $attachment);
~~~
以上代码位于`application/admin/controller/Ajax.php`第`135`行。因此我们在`Mydemo.php`中的`uploadAfter`会被触发。
## 触发行为
如果在特殊情况下我们需要手动触发行为,我们可以使用`\think\Hook::exec("upload_after", $attachment);`来手动触发行为,并获得返回值。
## 常见问题
如果我们在`Mydemo.php`中定义了行为并生效了,后续又删除了`Mydemo.php`中的行为代码,此归会导致整个框架都无法找到插件的行为方法,此时我们需要手动删除`application/extra/addons.php`中`hooks`节点相应的行为配置,移除相关的配置即可。