<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 事件說明 事件的定義寫在`插件名稱類`文件里面,方法命名方式以Hook結尾,字母駝峰式命名。 ## 插件能使用的事件 <blockquote class="danger"><p>2.1.220504版本起插件事件不在使用下劃線調用,但依然支持舊版的下劃線方式</p></blockquote> | 事件名稱 | 插件名稱類使用方式 | 描述 | 參數說明 | | --- | --- | --- | --- | | ~~addons_init~~<br/>2.1.220504版本起:addonsInit | addonsInitHook | 插件初始化,這個事件能影響到前臺、后臺,優先級最高 | - | | addonMiddleware | addonMiddlewareHook | 插件全局中間件,只要訪問任意插件前臺時觸發 | 請求的Request對象 | | addonsBegin | addonsBeginHook | 插件路由調度前事件,訪問插件控制器時觸發 |請求的Request對象 | | addonModuleInit | addonModuleInitHook | 插件控制器初始化前事件,訪問插件控制器時觸發 |請求的Request對象 | | addonsActionBegin | addonsActionBeginHook | 插件控制器操作方法執行前事件,訪問插件控制器操作方法時觸發 |傳入控制器對象與將要操作的方法 | | indexRoute | indexRouteHook | 訪問前臺時,在路由初始化時觸發, | 無 | | adminRoute | adminRouteHook | 訪問后臺時,在路由初始化時觸發 | 無 | | apiRoute | apiRouteHook | 訪問api時時,在路由初始化時觸發 | 無 | | configInit |configInitHook| 訪問前臺或后臺時,站點配置初始化后觸發(前后臺的基礎類) | 站點配置 | | adminLoginSuccess |adminLoginSuccessHook| 后臺登錄成功后標簽位 | 登錄信息 | | indexHead | indexHeadHook |前臺模板頭部標簽位 | 無 | | indexFooter | indexFooterHook | 前臺模板底部標簽位 | 無 | |themeChange|themeChangeHook|模板主題切換事件|傳入index_theme,或admin_theme| | uploadAfter | uploadAfterHook |文件上傳后觸發 | 傳入文件信息數組 | | uploadDel | uploadDelHook |文件刪除后觸發 | 傳入刪除的模型對象 | | ~~addonConfig_save~~| |插件保存配置時觸發(已廢棄) | 提交的配置表單 | | 插件標識ConfigSave |插件或模板配置保存時觸發(2.1.220220新增) | 提交的配置表單,例如你的插件叫:demo, 事件定義為:demoConfigSaveHook| | apiLoginMiddleware | apiLoginMiddlewareHook | API登錄中間件 | 請求Request對象 | | apiAuthMiddleware |apiAuthMiddlewareHook | API權限中間件 | 請求Request對象 | |HttpRun|HttpRunHook|應用開始標簽位(TP內置)|無| |HttpEnd|HttpEndHook|應用結束標簽位(TP內置)|當前響應對象實例| |RouteLoaded|RouteLoadedHook|路由加載完成(TP內置)|無| |LogWrite|LogWriteHook|日志write方法標簽位(TP內置)|當前寫入的日志信息| ## 使用方式 例如插件名稱叫`demo`,在`Demo`插件名稱類里面,若要使用`indexHead`前臺模板頭部事件。這里首先需要模板有放置該標簽事件,可前往默認模板找到head.html文件,即可看到`{:hook("indexHead")}`,當訪問前臺頁面執行到`{:hook("indexHead")}`時就會調用下面的`indexHeadHook`方法。 完整寫法如下 ~~~ <?php declare (strict_types=1); namespace addons\demo; use think\Addons; class Demo extends Addons { public function install() { return true; } public function uninstall() { return true; } // 前臺模板執行到<head></head>時觸發,通常用于加載JS、CSS達到特定的需求 public function indexHeadHook() { // 加載js return "<script src='/static/main.js'></script>"; // 或直接渲染視圖,可參考插件視圖 return $this->fetch('index/index'); } } ~~~ ## 擴展 當我們在寫業務邏輯時,需要自己定義一些事件標簽位來給其他插件實現功能擴展,那么我們可以參考下面來實現。 **1. hook方法** 系統有提供`hook`方法來觸發事件,方法說明: ~~~ /** * $event 事件名稱 * $params 傳入參數 * $once = true 表示返回一個結果,$once = false 表示返回全部結果 * $original = true 表示 返回TP trigger原始數據,false - 返回字符串,如果原樣返回數據是數組即會轉換成字符串 */ hook($event, $params, $once, $original) ~~~ **2. 觸發事件** 例如定義觸發`showTest`事件。 ``` // 控制器觸發,傳入數組 hook('showTest', ['a'=>'測試']); // 模板觸發,傳入數組 {:hook("showTest",['a'=>'測試'])} // 接收返回值:輸出原始數據。第四個參數給true即可 $arr = hook("showTest",['a'=>'測試'],true,true); ``` > 注意:當有多個插件定義showTest事件時,返回值是數組的,并不建議這樣來使用事件 上面定義了`showTest`觸發事件方法,那么在其他插件就可以定義`showTest`事件來實現擴展,如下 ~~~ <?php declare (strict_types=1); namespace addons\demo; use think\Addons; class Demo extends Addons { public function install() { return true; } public function uninstall() { return true; } // 對應showTest public function showTestHook() { echo "測試"; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看