1.模板賦值php
若是要在模板中輸出變量,必須在在控制器中把變量傳遞給模板,系統提供了assign方法對模板變量賦值,不管何種變量類型都統一使用assign賦值。html
$this->assign('name',$value); // 下面的寫法是等效的 $this->name = $value;
assign方法必須在display和show方法
以前調用。系統變量能夠經過特殊的標籤輸出,無需賦值模板變量。thinkphp
賦值後,就能夠在模板文件中輸出變量了,若是使用的是內置模板的話,就能夠這樣輸出: {$name}
數據庫
若是要同時輸出多個模板變量,能夠使用下面的方式:函數
$array['name'] = 'thinkphp'; $array['email'] = 'liu21st@gmail.com'; $array['phone'] = '12335678'; $this->assign($array);
這樣,就能夠在模板文件中同時輸出name、email和phone三個變量。fetch
2.模板渲染this
渲染模板輸出最經常使用的是使用display方法,調用格式: 編碼
display('[模板文件]'[,'字符編碼'][,'輸出類型']) spa
模板文件的寫法支持下面幾種: code
// 不帶任何參數 自動定位當前操做的模板文件 $this->display();
系統按照默認規則自動定位模板文件,其規則是:
若是當前沒有啓用模板主題則定位到:當前模塊/默認視圖目錄/當前控制器/當前操做.html,
若是有啓用模板主題則定位到:當前模塊/默認視圖目錄/當前主題/當前控制器/當前操做.html,
一般默認的視圖目錄是View。
指定模板輸出,以下:
//調用當前控制器視圖目錄下的edit.html模板。 $this->display('edit');
調用其餘控制器視圖目錄下的模板,以下:
//調用Member控制器視圖目錄下的read.html模板 $this->display('Member:read');
渲染輸出不須要寫模板文件的路徑和後綴,確切地說,這裏面的控制器和操做並不必定須要有實際對應的控制器和操做,只是一個目錄名稱和文件名稱而已,例如,你的項目裏面可能根本沒有Public控制器,更沒有Public控制器的menu操做,可是同樣能夠使用 $this->display('Public:menu'); 輸出這個模板文件。
調用其餘模塊下的模板,以下:
$this->display("Login@Test:edit"); //若是當前模塊是Home,表示調用Login模塊下Test控制器視圖目錄下的edit.html模板。
display方法支持在渲染輸出的時候指定輸出編碼和類型,例如,能夠指定編碼和類型:
$this->display('read', 'utf-8', 'text/xml');
表示輸出XML頁面類型。編碼及類型是經過http響應頭中指定的:
事情總有特例,若是的模板目錄是自定義的,或者根本不須要按模塊進行分目錄存放,直接傳入模板文件名便可,例如:
$this->display('./Template/Public/menu.html');
這種方式須要指定模板路徑和後綴,這裏的Template/Public目錄是位於當前項目入口文件位置下面。若是是其餘的後綴文件,也支持直接輸出。
要注意模板文件位置是相對於項目的入口文件index.php,而不是模板目錄。
3.獲取模板地址
T函數用於生成模板文件名,用法:
T([資源://][模塊@][主題/][控制器/]操做,[視圖分層])
T函數的返回值是一個完整的模板文件名,能夠直接用於display和fetch方法進行渲染輸出。
T('Public/menu');// 返回 當前模塊/View/Public/menu.html T('blue/Public/menu');// 返回 當前模塊/View/blue/Public/menu.html T('Admin@Public/menu');// 返回 Admin/View/Public/menu.html // 在display方法中直接使用T函數輸出模板 $this->display(T('Admin@Public/menu'));
5.獲取內容
若是須要獲取渲染模板的輸出內容而不是直接輸出,能夠使用fetch方法。
模板文件的調用方法和display方法徹底同樣,區別就在於fetch方法渲染後不是直接輸出,而是返回渲染後的內容,例如:
$content = $this->fetch('Member:edit');
6.渲染內容
若是你沒有定義任何模板文件,或者把模板內容存儲到數據庫中的話,你就須要使用show方法來渲染輸出了,show方法的調用格式:
show('渲染內容'[,'字符編碼'][,'輸出類型'])
能夠指定編碼和類型: $this->show($content, 'utf-8', 'text/xml');