## 行為事件
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`節點相應的行為配置,移除相關的配置即可。