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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 9. 插件控制器 ## 插件控制器 插件除了基于前臺與后臺外,還可以作為獨立的模塊。創建控制器后即可賦予插件前臺訪問功能。 ## 創建控制器 控制器放在`controller`文件夾下,以`demo`插件為例,創建首頁控制器,路徑為:addons/demo/controller/Index.php,如下圖 ![](https://img.kancloud.cn/8c/c7/8cc77f51bb2a94ca11905d43e3272c7c_308x128.png) Index.php 代碼 ``` <pre class="calibre16">``` <span class="token"><</span><span class="token">?</span>php namespace addons\demo\controller<span class="token1">;</span> use think\addons\Controller<span class="token1">;</span> class <span class="token6">Index</span> extends <span class="token6">Controller</span> <span class="token1">{</span> public <span class="token2">function</span> <span class="token6">index</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> <span class="token2">return</span> <span class="token4">'首頁'</span><span class="token1">;</span> <span class="token1">}</span> <span class="token1">}</span> ``` ``` 瀏覽器訪問地址格式:[http://xxx.com/addons/插件名稱/控制器名/操作方法](http://xxx.com/addons/%E6%8F%92%E4%BB%B6%E5%90%8D%E7%A7%B0/%E6%8E%A7%E5%88%B6%E5%99%A8%E5%90%8D/%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95) 如上`demo`插件,那么首頁控制器訪問如下,沒寫控制器那么訪問的是`Index`控制器,操作方法默認是`index` <http://xxx.com/addons/demo/index/index> 首頁默認是Index,操作方法index,那么可以省略,如下即可直接訪問到 <http://xxx.com/addons/demo/> ## 基類控制器 創建的控制器繼承`think\addons\Controller`基類,文件位置在:vendor/hkcms/cms-addons/src/addons/Controller.php 繼承之后有以下屬性、方法可以調用,你可根據自己的需要重寫某些屬性、方法 屬性名說明使用說明$error\_tmpl錯誤頁默認是插件視圖根目錄下的error.html,參考app/common/tpl/error.html$success\_tmpl成功頁同上,只有使用error方法或success方法時有效$app容器變量有路由、配置、路由等實例對象,更多了解:[http://www.hmoore.net/manual/thinkphp6\_0/1037489](http://www.hmoore.net/manual/thinkphp6_0/1037489)$request請求對象用于獲取請求的信息,更多了解:[http://www.hmoore.net/manual/thinkphp6\_0/1037518](http://www.hmoore.net/manual/thinkphp6_0/1037518)$name插件標識名稱$addon\_path當前插件根路徑$cache緩存更多了解:[http://www.hmoore.net/manual/thinkphp6\_0/1037634](http://www.hmoore.net/manual/thinkphp6_0/1037634)$site站點配置數組即后臺站點配置,$this-site\['title'\] 獲取網站名稱**控制器方法** 1. `error`方法,輸出錯誤信息,如果是ajax請求則返回的是json數據。如果不是ajax確保視圖目錄下有error.html文件,你可通過$error\_tmpl來指定位置,只能是視圖目錄下。 ``` <pre class="calibre16">``` <span class="token5">// 在控制器里面使用</span> public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $this<span class="token">-</span><span class="token">></span><span class="token6">error</span><span class="token1">(</span><span class="token4">'出錯了'</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> <span class="token5">// $msg 提示信息</span> <span class="token5">// $url = 跳轉地址</span> <span class="token5">// $data = 返回的數據</span> <span class="token5">// $wait = 等待幾秒后跳轉,默認3秒</span> <span class="token5">// $header = 頭部信息</span> $this<span class="token">-</span><span class="token">></span><span class="token6">error</span><span class="token1">(</span>$msg<span class="token1">,</span> $url<span class="token1">,</span> $data<span class="token1">,</span>$wait<span class="token1">,</span> $header<span class="token1">)</span> ``` ``` 2. `success`方法,輸出正確提示信息,同上一樣。 3. `result` 方法返回指定的數據類型,例如json、xml,默認是json,常用于接口。 ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $this<span class="token">-</span><span class="token">></span><span class="token6">result</span><span class="token1">(</span><span class="token4">'操作成功'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'lists'</span><span class="token">=</span><span class="token">></span><span class="token1">[</span><span class="token1">]</span><span class="token1">]</span><span class="token1">,</span><span class="token3">200</span><span class="token1">,</span> <span class="token4">'json'</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` ``` <pre class="calibre16">``` <span class="token5">/** * $msg 提示信息 * $data 要返回的數據 * $code 返回的code * $type 返回數據格式 * $header 發送的Header信息 */</span> $this<span class="token">-</span><span class="token">></span><span class="token6">result</span><span class="token1">(</span>$msg <span class="token">=</span> <span class="token4">''</span><span class="token1">,</span> $data <span class="token">=</span> <span class="token1">[</span><span class="token1">]</span><span class="token1">,</span> $code <span class="token">=</span> <span class="token3">200</span><span class="token1">,</span> $type <span class="token">=</span> <span class="token4">'json'</span><span class="token1">,</span> array $header <span class="token">=</span> <span class="token1">[</span><span class="token1">]</span><span class="token1">)</span> ``` ``` 4. `fetch`加載模板頁面方法 如下,參數一填寫模板位置,位置是基于插件視圖為基準,另外如果為空默認以當前控制器/操作方法方式找到模板位置。參數二為模板變量參數 ``` <pre class="calibre16">``` <span class="token5">/** * $template 模板文件名 * $vars 模板輸出變量 */</span> $this<span class="token">-</span><span class="token">></span><span class="token6">fetch</span><span class="token1">(</span>$template <span class="token">=</span> <span class="token4">''</span><span class="token1">,</span> $vars <span class="token">=</span> <span class="token1">[</span><span class="token1">]</span><span class="token1">)</span> ``` ``` 以demo插件為例,以下是Index控制器加載模板,參數沒有填寫那么加載的模板路徑為:addons/demo/view/index/test.html ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> <span class="token2">return</span> $this<span class="token">-</span><span class="token">></span><span class="token6">fetch</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 加載其他模板,路徑為:addons/demo/view/test/index.html ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> <span class="token2">return</span> $this<span class="token">-</span><span class="token">></span><span class="token6">fetch</span><span class="token1">(</span><span class="token4">'test/index'</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 5. `display`渲染模板內容 與fetch方法不同的是,fetch方法時獲取傳入的文件位置,display方法是直接傳入字符串渲染。 ``` <pre class="calibre16">``` <span class="token5">/** * @param string $content 模板內容 * @param array $vars 模板輸出變量 */</span> $this<span class="token">-</span><span class="token">></span><span class="token6">display</span><span class="token1">(</span>$content <span class="token">=</span> <span class="token4">''</span><span class="token1">,</span> $vars <span class="token">=</span> <span class="token1">[</span><span class="token1">]</span><span class="token1">)</span> ``` ``` 示例 ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $html <span class="token">=</span> <span class="token4">'<a>{$test}</a>'</span><span class="token1">;</span> <span class="token2">return</span> $this<span class="token">-</span><span class="token">></span><span class="token6">display</span><span class="token1">(</span>$html<span class="token1">,</span> <span class="token1">[</span><span class="token4">'test'</span><span class="token">=</span><span class="token">></span><span class="token3">111</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 6. `assign`模板變量賦值方法 ``` <pre class="calibre16">``` <span class="token5">/** * @param mixed $name 要顯示的模板變量 * @param mixed $value 變量的值 */</span> $this<span class="token">-</span><span class="token">></span><span class="token6">assign</span><span class="token1">(</span>$name<span class="token1">,</span> $value <span class="token">=</span> <span class="token4">''</span><span class="token1">)</span> ``` ``` 示例:如下,這樣定義好后,在模板頁面寫入{$txt}即可。 ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $txt <span class="token">=</span> <span class="token4">'測試'</span><span class="token1">;</span> $this<span class="token">-</span><span class="token">></span><span class="token6">assign</span><span class="token1">(</span><span class="token4">'txt'</span><span class="token1">,</span> $txt<span class="token1">)</span><span class="token1">;</span> <span class="token2">return</span> $this<span class="token">-</span><span class="token">></span><span class="token6">fetch</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 7. `getInfo`獲取插件信息 ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $ini <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token6">getInfo</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token6">dump</span><span class="token1">(</span>$ini<span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 8. `getConfig`獲取插件配置 true = 獲取完整配置,即返回config.php里面的完整數組,false 僅獲取鍵值。 ``` <pre class="calibre16">``` <span class="token5">/** * @param bool $type 是否獲取完整配置 */</span> $this<span class="token">-</span><span class="token">></span><span class="token6">getConfig</span><span class="token1">(</span>$type <span class="token">=</span> <span class="token3">false</span><span class="token1">)</span> ``` ``` 示例 ``` <pre class="calibre16">``` public <span class="token2">function</span> <span class="token6">test</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> $config <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token6">getConfig</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token6">dump</span><span class="token1">(</span>$config<span class="token1">)</span><span class="token1">;</span> <span class="token1">}</span> ``` ``` 可參考內容: [插件內置函數](Cha%20Jian%20Nei%20Zhi%20Han%20Shu.html)
                  <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>

                              哎呀哎呀视频在线观看