<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # **模板定位** 默認規則: 視圖目錄(view)/控制器名(小寫)/操作名(小寫)+模板后綴.html 我們可以通過修改config.php配置文件的`view_base`與`view_path` ``` 'template' => [ // 默認模板渲染規則 1 解析為小寫+下劃線 2 全部轉換小寫 'auto_rule' => 1, // 模板引擎類型 支持 php think 支持擴展 'type' => 'Think', // V5.0.3+ 視圖基礎目錄,配置目錄為所有模塊的視圖起始目錄 //用于定義全局的視圖根目錄,然后模塊作為子目錄 'view_base' => '', // 當前模塊的模板視圖目錄 留空為自動獲取 'view_path' => '', // 模板后綴 'view_suffix' => 'html', // 模板文件名分隔符 'view_depr' => DS, // 模板引擎普通標簽開始標記 'tpl_begin' => '{', // 模板引擎普通標簽結束標記 'tpl_end' => '}', // 標簽庫標簽開始標記 'taglib_begin' => '{', // 標簽庫標簽結束標記 'taglib_end' => '}', // 預先加載的標簽庫 'taglib_pre_load' => 'app\common\taglib\Demo', ], ``` 默認情況下`view_base`與`view_path`都為空,系統自動賦值`view_path`為view,所以我們的模版文件在每個模塊下的view目錄里 如果設置了view_base的值且不為空,那么優先讀取view_base,替換掉原來的application/module/view根目錄 如設置`'view_base'=>'/../public/view/',` 那么視圖目錄就從application/module/view變成public/view 加載模版文件的方法為 ``` return new \think\View\View()->fetch('模塊@控制器/操作') ``` >[danger]詳細內容查看 視圖章節的模版渲染 # **模板標簽** ## 普通標簽 >[info]用于變量輸出和模板注釋 普通模板標簽默認以`{`和`}`作為開始和結束標識,{里面開頭不能出現空格} 修改標簽只需要修改配置文件如下選項 ~~~ 'template' => [ // 模板引擎 'type' => 'think', // 普通標簽開始標記 'tpl_begin' => '<{', // 普通標簽結束標記 'tpl_end' => '}>' ], ~~~ ## 標簽庫標簽 >[info]用于模板變量輸出、文件包含、條件控制、循環輸出等功能 修改下面的配置參數即可修改標簽庫標簽 ~~~ 'template' => [ // 模板引擎 'type' => 'think', //標簽庫標簽開始標簽 'taglib_begin' => '<', //標簽庫標簽結束標記 'taglib_end' => '>', ], ~~~ ### **自定義標簽庫標簽** 下面以標簽庫放在`common`作為一個示例: ~~~ <?php namespace app\common\taglib; use think\template\TagLib; class Demo extends TagLib{ /** * 定義標簽列表 */ protected $tags = [ // 標簽定義: attr 屬性列表 close 是否閉合(0 或者1 默認1) alias 標簽別名 level 嵌套層次 'close' => ['attr' => 'time,format', 'close' => 0], //閉合標簽,默認為不閉合 'open' => ['attr' => 'name,type', 'close' => 1], ]; /** * 這是一個閉合標簽的簡單演示 */ public function tagClose($tag) { $format = empty($tag['format']) ? 'Y-m-d H:i:s' : $tag['format']; $time = empty($tag['time']) ? time() : $tag['time']; $parse = '<?php '; $parse .= 'echo date("' . $format . '",' . $time . ');'; $parse .= ' ?>'; return $parse; } /** * 這是一個非閉合標簽的簡單演示 */ public function tagOpen($tag, $content) { $type = empty($tag['type']) ? 0 : 1; // 這個type目的是為了區分類型,一般來源是數據庫 $name = $tag['name']; // name是必填項,這里不做判斷了 $parse = '<?php '; $parse .= '$test_arr=[[1,3,5,7,9],[2,4,6,8,10]];'; // 這里是模擬數據 $parse .= '$__LIST__ = $test_arr[' . $type . '];'; $parse .= ' ?>'; $parse .= '{volist name="__LIST__" id="' . $name . '"}'; $parse .= $content; $parse .= '{/volist}'; return $parse; } } ~~~ 這時候我們的控制器繼承`Controller`,在配置參數中配置: ~~~ 'template' => [ // 模板引擎類型 支持 php think 支持擴展 'type' => 'Think', // 模板路徑 'view_path' => '', // 模板后綴 'view_suffix' => '.html', // 預先加載的標簽庫 'taglib_pre_load' => 'app\common\taglib\Demo', ], ~~~ 我們就可以在控制器中對模版賦值: ~~~ //給模版給以一個當前請求時間戳的值 $this->assign('demo_time',$this->request->time()); ~~~ 在模版中調用我們已經預先加載的標簽: ~~~ <h1>閉合標簽</h1> {demo:close time='$demo_time'/} <hr> <h1>非閉合標簽</h1> {demo:open name='demo_name'} {$key}=>{$demo_name}<br> {/demo:open} <br> {demo:open name='demo_name' type='1'} {$key}=>{$demo_name}<br> {/demo:open} ~~~ 內置的模板引擎除了支持普通變量的輸出之外,更強大的地方在于標簽庫功能。 > 標簽庫類似于Java的Struts中的JSP標簽庫,每一個標簽庫是一個獨立的標簽庫文件,標簽庫中的每一個標簽完成某個功能,采用XML標簽方式(包括開放標簽和閉合標簽)。 標簽庫分為內置和擴展標簽庫,內置標簽庫是`Cx`標簽庫。 ## 導入標簽庫 使用taglib標簽導入當前模板中需要使用的標簽庫,例如: ~~~ {taglib name="html" /} ~~~ > 如果沒有定義html標簽庫的話,則導入無效。 也可以導入多個標簽庫,使用: ~~~ {taglib name="html,article" /} ~~~ 導入標簽庫后,就可以使用標簽庫中定義的標簽了,假設article標簽庫中定義了read標簽: ~~~ {article:read name="hello" id="data" } {$data.id}:{$data.title} {/article:read} ~~~ 在上面的標簽中,`{article:read}... {/article:read}`就是閉合標簽,起始和結束標簽必須成對出現。 如果是`{article:read name="hello" /}`就是開放標簽。 > 閉合和開放標簽取決于標簽庫中的定義,一旦定義后就不能混淆使用,否則就會出現錯誤。 ## 內置標簽 內置標簽庫無需導入即可使用,并且不需要加XML中的標簽庫前綴,ThinkPHP內置的標簽庫是Cx標簽庫,所以,Cx標簽庫中的所有標簽,我們可以在模板文件中直接使用,我們可以這樣使用: ~~~ {eq name="status" value="1" } 正常 {/eq} ~~~ 如果Cx不是內置標簽的話,可能就需要這么使用了: ~~~ {cx:eq name="status" value="1" } 正常 {/cx:eq} ~~~ 更多的Cx標簽庫中的標簽用法,參考[內置標簽](http://www.hmoore.net/manual/thinkphp5/125015#)。 內置標簽庫可以簡化模板中標簽的使用,所以,我們還可以把其他的標簽庫定義為內置標簽庫(前提是多個標簽庫沒有標簽沖突的情況),例如: ~~~ 'taglib_build_in' => 'cx,article' ~~~ 配置后,上面的標簽用法就可以改為: ~~~ {read name="hello" id="data" } {$data.id}:{$data.title} {/read} ~~~ ## 標簽庫預加載 標簽庫預加載是指無需手動在模板文件中導入標簽庫即可使用標簽庫中的標簽,通常用于某個標簽庫需要被大多數模板使用的情況。 在應用或者模塊的配置文件中添加: ~~~ 'taglib_pre_load' => 'article,html' ~~~ 設置后,模板文件就不再需要使用 ~~~ {taglib name="html,article" /} ~~~ 但是仍然可以在模板中調用: ~~~ {article:read name="hello" id="data" } {$data.id}:{$data.title} {/article:read} ~~~
                  <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>

                              哎呀哎呀视频在线观看