<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[info] 鉤子就好比衣架,插件就好比衣服,你把衣架放哪兒,衣服就會在哪兒。 通過后臺的插件設計工具,系統會自動創建對應的插件文件。 我們以前面創建的test插件為例,對應的文件:/plugins/test/test.php ## 插件的約束 每個插件文件必須繼承公共的插件控制器``app\common\controller\Plugins``,插件里面必須要有以下四個方法: ~~~ /** * 安裝前的業務處理,可在此方法實現,默認返回true * @return bool */ public function install() { // 在此寫業務代碼,沒有可不寫 return true; } /** * 安裝后的業務處理,可在此方法實現,默認返回true * @return bool */ public function installAfter() { // 在此寫業務代碼,沒有可不寫 return true; } /** * 卸載前的業務處理,可在此方法實現,默認返回true * @return bool */ public function uninstall() { // 在此寫業務代碼,沒有可不寫 return true; } /** * 卸載后的業務處理,可在此方法實現,默認返回true * @return bool */ public function uninstallAfter() { // 在此寫業務代碼,沒有可不寫 return true; } ~~~ ## 插件鉤子的添加與實現方法 >[info] 插件鉤子的索引變量名為 $hooks ~~~ /** * @var array 插件鉤子索引 * 插件安裝后,新添加的鉤子方法需要重裝插件才會生效 */ public $hooks = [ // 鉤子名稱 => 鉤子說明【系統鉤子,說明不用填寫】 'system_admin_tips',// 這是系統默認預埋的鉤子 ]; ~~~ >[info] system_admin_tips是系統預埋的鉤子,直接寫對應的實現方法即可 ~~~ /** * @var array 插件鉤子索引 * 插件安裝后,新添加的鉤子方法需要重裝插件才會生效 */ public $hooks = [ // 鉤子名稱 => 鉤子說明【系統鉤子,說明不用填寫】 'system_admin_tips',// 這是系統默認預埋的鉤子 ]; /** * system_admin_tips鉤子方法 * @param $params */ public function systemAdminTips(&$params) { echo '我是系統預埋的鉤子'; } ~~~ >[info] 自定義鉤子example_hook ~~~ /** * @var array 插件鉤子索引 * 插件安裝后,新添加的鉤子方法需要重裝插件才會生效 */ public $hooks = [ // 鉤子名稱 => 鉤子說明【系統鉤子,說明不用填寫】 'example_hook' => '這是一個擴展的自定義鉤子', ]; /** * example_hook鉤子方法 * @param $params */ public function example_hook(&$params) { $str = '我是一個自定義鉤子'; // 【示例】直接輸出字符串 echo $str; // 【示例】模板賦值并輸出模板 $this->assign('str', $str); // 模板文件完整路徑:/plugins/test/view/widget/example_hook.php return $this->fetch('example_hook'); } ~~~ >[info] 鉤子的調用方法:runhook('example_hook') >帶參數調用:runhook('example_hook', ['param1'=> '參數1', 'param2'=> '參數2'])
                  <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>

                              哎呀哎呀视频在线观看