<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 快速入門(七):視圖 在了解了控制器和模型操作后,我們開始熟悉視圖部分,ThinkPHP中的視圖主要就是指模板文件和模板引擎,本篇首先了解下模板定義以及如何進行模板賦值并渲染輸出的。 ## 模板定義 每個模塊的模板文件是獨立的,為了對模板文件更加有效的管理,ThinkPHP對模板文件進行目錄劃分,默認的模板文件定義規則是: ~~~ 視圖目錄/[模板主題/]控制器名/操作名+模板后綴 ~~~ 默認的視圖目錄是模塊的View目錄(模塊可以有多個視圖文件目錄,這取決于你的應用需要),框架的默認視圖文件后綴是.html。 > 大多數情況下你不需要主題功能,因此新版模板主題默認是空(表示不啟用模板主題功能)。 一般情況下,模板文件都在模塊的視圖目錄下面,并且是以模塊下面的控制器名為目錄,然后是每個控制器的具體操作模板文件,例如: User控制器的add操作對應的模板文件就應該是:`./Application/Home/View/User/add.html` 如果你的默認視圖層不是View,例如: ~~~ // 設置默認的視圖層名稱 'DEFAULT_V_LAYER' => 'Template', ~~~ 那么,對應的模板文件就變成了:`./Application/Home/Template/User/add.html`。 模板文件的默認后綴的情況是.html,也可以通過 **TMPL_TEMPLATE_SUFFIX** 來配置成其他的。例如,我們可以配置: ~~~ 'TMPL_TEMPLATE_SUFFIX'=>'.tpl' ~~~ 定義后,User控制器的add操作 對應的模板文件就變成是: `./Application/Home/View/User/add.tpl` 如果覺得目錄結構太深,可以通過設置 **TMPL_FILE_DEPR** 參數來配置簡化模板的目錄層次,例如設置: ~~~ 'TMPL_FILE_DEPR'=>'_' ~~~ 默認的模板文件就變成了:`./Application/Home/View/User_add.html` 如果需要,允許把模板目錄設置到模塊目錄之外,有兩種方式: **一、改變所有模塊的模板文件目錄** 可以通過設置TMPL_PATH常量來改變所有模塊的模板目錄所在,例如: ~~~ define('TMPL_PATH','./Template/'); ~~~ 原來的`./Application/Home/View/User/add.html`變成了`./Template/Home/User/add.html`。 > 注意TMPL_PATH常量最后使用“/”符號結尾。 **二、改變某個模塊的模板文件目錄** 我們可以在模塊配置文件中設置**VIEW_PATH**參數單獨定義某個模塊的視圖目錄,例如: ~~~ 'VIEW_PATH'=>'./Theme/' ~~~ 把當前模塊的視圖目錄指定到最外層的Theme目錄下面,而不是放到當前模塊的View目錄下面。 原來的`./Application/Home/View/User/add.html`變成了`./Theme/User/add.html`。 > 注意:如果同時定義了TMPL_PATH常量和VIEW_PATH設置參數,那么以當前模塊的VIEW_PATH參數設置優先。 ## 模板渲染 渲染模板輸出最常用的是使用display方法,調用格式: ~~~ display('[模板文件]'[,'字符編碼'][,'輸出類型']) ~~~ 模板文件的寫法支持下面幾種: |用法 |描述| |--------|--------| |不帶任何參數 |自動定位當前操作的模板文件| |[模塊@][控制器:][操作] |常用寫法,支持跨模塊 模板主題可以和theme方法配合| |完整的模板文件名 |直接使用完整的模板文件名(包括模板后綴)| 下面是一個最典型的用法,不帶任何參數: ~~~ // 不帶任何參數 自動定位當前操作的模板文件 $this->display(); ~~~ 表示系統會按照默認規則自動定位模板文件,其規則是: * 如果當前沒有啟用模板主題則定位到:`當前模塊/默認視圖目錄/當前控制器/當前操作.html` ; * 如果有啟用模板主題則定位到:`當前模塊/默認視圖目錄/當前主題/當前控制器/當前操作.html`; * 如果有更改TMPL_FILE_DEPR設置(假設 'TMPL_FILE_DEPR'=>'_')的話,則上面的自動定位規則變成: `當前模塊/默認視圖目錄/當前控制器_當前操作.html` 和 `當前模塊/默認視圖目錄/當前主題/當前控制器_當前操作.html`。 所以通常display方法無需帶任何參數即可輸出對應的模板,這是模板輸出的最簡單的用法。 通常默認的視圖目錄是View 如果沒有按照模板定義規則來定義模板文件(或者需要調用其他控制器下面的某個模板),可以使用: ~~~ // 指定模板輸出 // 表示調用當前控制器下面的edit模板 $this->display('edit'); ~~~ 或者指定控制器 ~~~ // 表示調用Member控制器下面的read模板 $this->display('Member:read'); ~~~ 如果我們使用了模板主題功能,那么也可以支持跨主題調用,使用: ~~~ // 調用blue主題下面的User控制器的edit模板 $this->theme('blue')->display('User:edit'); ~~~ 渲染輸出不需要寫模板文件的路徑和后綴,確切地說,這里面的控制器和操作并不一定需要有實際對應的控制器和操作,只是一個目錄名稱和文件名稱而已,例如,你的項目里面可能根本沒有Public控制器,更沒有Public控制器的menu操作,但是一樣可以使用 ~~~ $this->display('Public:menu'); ~~~ 輸出這個模板文件。 display方法支持在渲染輸出的時候指定輸出編碼和類型,例如,可以指定編碼和類型: ~~~ // 輸出XML頁面類型(配合你的應用需求可以輸出很多類型) $this->display('read', 'utf-8', 'text/xml'); ~~~ 事情總有特例,如果的模板目錄是自定義的,或者根本不需要按模塊進行分目錄存放,那么默認的display渲染規則就不能處理,這個時候,我們就需要使用另外一種方式來應對,直接傳入模板文件名即可,例如: ~~~ $this->display('./Template/Public/menu.html'); ~~~ 這種方式需要指定模板路徑和后綴,這里的Template/Public目錄是位于當前項目入口文件位置下面(當然如果需要也可以使用絕對路徑)。 如果是其他的后綴文件,也支持直接輸出,例如: ~~~ $this->display('./Template/Public/menu.tpl'); ~~~ 只要`./Template/Public/menu.tpl`是一個實際存在的模板文件。 > 要注意模板文件位置是相對于項目的入口文件,而不是模板目錄。 如果需要獲取渲染模板的輸出內容而不是直接輸出,可以使用fetch方法。 fetch方法的用法除了不需要指定輸出編碼和類型外其它和display基本一致,格式: ~~~ fetch('模板文件') ~~~ 模板文件的調用方法和display方法完全一樣,區別就在于fetch方法渲染后不是直接輸出,而是返回渲染后的內容,例如: ~~~ $content = $this->fetch('Member:edit'); ~~~ 使用fetch方法獲取渲染內容后,你可以進行過濾和替換等操作,或者用于對輸出的復雜需求。 ## 渲染內容 如果你沒有定義任何模板文件,或者把模板內容存儲到數據庫中的話,你就需要使用show方法來渲染輸出了,show方法的調用格式: ~~~ show('渲染內容'[,'字符編碼'][,'輸出類型']) ~~~ 例如, ~~~ $this->show($content); // 也可以指定編碼和類型 $this->show($content, 'utf-8', 'text/xml'); ~~~ > 注意:show方法中的內容也可以支持模板解析。 ## 模板賦值 如果要在模板中輸出變量,必須在在控制器中把變量傳遞給模板,系統提供了assign方法對模板變量賦值,無論何種變量類型都統一使用assign賦值。 ~~~ $this->assign('name',$value); ~~~ assign方法必須在display和show方法之前調用,并且系統只會輸出設定的變量,其它變量不會輸出(系統變量例外),一定程度上保證了變量的安全性。 > 系統變量可以通過特殊的標簽輸出,無需賦值模板變量 賦值后,就可以在模板文件中輸出變量了,如果使用的是內置模板的話,就可以這樣輸出: ~~~ {$name} ~~~ 如果要同時輸出多個模板變量,可以使用下面的方式: ~~~ $array['name'] = 'thinkphp'; $array['email'] = 'liu21st@gmail.com'; $array['phone'] = '12335678'; $this->assign($array); ~~~ 這樣,就可以在模板文件中同時輸出name、email和phone三個變量。 模板變量的輸出根據不同的模板引擎有不同的方法,我們在后面會專門講解內置模板引擎的用法。如果你使用的是PHP本身作為模板引擎的話 ,就可以直接在模板文件里面輸出了: ~~~ <?php echo $name.'['.$email.''.$phone.']';?> ~~~ 如果采用內置的模板引擎,可以使用: ~~~ {$name} [ {$email} {$phone} ] ~~~ 輸出同樣的內容。 ## 總結 通過本篇的學習,我們大概掌握了如何定義模板文件和進行模板渲染輸出,以及如何賦值模板變量,后面我們將會學習如何在模板文件中使用標簽來簡化你的書寫。
                  <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>

                              哎呀哎呀视频在线观看