新版的控制器能夠無需繼承任何的基礎類,所以在控制器中如何使用視圖取決於你怎麼定義控制php
繼承Controller後即可以直接使用 request 和view類的方法 $this->request->isPost() $this->fetch()html
控制器繼承了\think\Controller類,能夠直接調用試圖類的方法
$this->fetch('模板',參數);thinkphp
2.助手函數 渲染模板輸出 return view('hello',['name'=>'thinkphp']); 助手函數調用格式: view('[模板文件]'[,'模板變量(數組)'][,模板替換(數組)]) 不管你是否繼承think\Controller 類,助手函數均可以使用,也是最方便的一種數組
一 模板賦值 1.系統變量 配置參數無需賦值 自定義變量經過assign()賦值 賦值單個變量cookie
賦值數組
二 .模板渲染 fetch('模板文件','值') 渲染使用規則 (1).不寫參數自動定位當前操做(與當前操做名同名模板文件小名)的模板文件編輯器
[@1](https://my.oschina.net/u/1198) 當前模塊/默認視圖目錄/當前控制器(小寫)/當前操做(小寫).html @2 模板引擎的view_depr 設置(假設 'view_depr'=>'_' )的話,則上面的自動定位規則變成: 當前模塊/默認視圖目錄/當前控制器(小寫)_當前操做(小寫).html
(2).設置模板參數 @1 表示調用當前控制器下面的edit模板 return $view->fetch('edit');函數
@2 表示調用Member控制器下面的read模板。 return $view->fetch('member/read'); [@3](https://my.oschina.net/u/2648711) 跨模塊調用 return $view->fetch('admin@member/edit');
實質: 渲染輸出不須要寫模板文件的路徑和後綴,這裏面的控制器和操做並不必定須要有實際對應的控制器和操做,只是一個目錄名稱和文件名稱而已, (系統直接從view下尋找相對應設置的控制器和操做方法名對應的文件)fetch
例如,你的項目裏面可能根本沒有Public控制器,更沒有Public控制 器的menu操做,可是同樣可使用 return $view->fetch('public/menu'); 輸出這個模板文件。理解了這個,模板輸出就清晰了。this
@4 自定義模板路徑(這種方式須要帶模板路徑和後綴指定一個完整的模板文件位) return $view->fetch('模板文件位置');
模板文件位置是相對於應用的入口文件,而不是模板目錄 return $view->fetch('./template/public/menu.html');這裏的template/public 目錄是位於當前 項目入口文件位置下面.net
三 渲染內容 若是但願直接解析內容而不經過模板文件的話,可使用display 方法: $this->display($content,$vars); 渲染的內容中同樣可使用模板引擎的相關標籤 public function index() { $content = '{$name}-{$email}'; return $this->display($content, [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); }
四 模板輸出字符串替換 1.全局替換的話,能夠直接在配置文件中添加: 'view_replace_str' => [ 'PUBLIC'=>'/public/', 'ROOT' => '/', ] 而後就能夠直接使用 2.單個視圖中字符串替換 public function index() { $this->assign('name','thinkphp'); return $this->fetch('index',[],['PUBLIC'=>'/public/']); }
五 模板標籤 普通標籤用於變量輸出和模板註釋,普通模板標籤默認以{ 和 } 做爲開始和結束標識,而且在開始標記緊 跟標籤的定義,若是之間有空格或者換行則被視爲非模板標籤直接輸出。 例如: {$name} {} templste 裏配置修改能夠 {$vo.name}
標籤庫標籤 標籤庫標籤 標籤庫標籤能夠用於模板變量輸出、文件包含、條件控制、循環輸出等功能,並且徹底能夠本身擴展功能。 5.0版本的標籤庫默認定界符和普通標籤同樣使用{ 和} ,是爲了便於在編輯器裏面編輯不至於報錯,當 然,你仍然能夠更改標籤庫標籤的起始和結束標籤,修改下面的配置參數:
六 變量輸出 (1)普通變量須要先賦值後才能在模板中輸出 {$name} 編譯結果 <?php echo($name);?>
@2 數組 {$data.name} {$data['name']} @3 對象 {$data:name} {$data->name}
(2)系統變量不須要能夠直接在模板中輸出,系統變量輸出一般以$Think 開頭 {$Think.server.script_name} 輸出$_SERVER['SCRIPT_NAME']變量 {$Think.cookie.name} 輸出$_COOKIE['name']變量
七 常量輸出 {$Think.APP_PATH} 八 配置輸出 {$Think.config.default_module} {$Think.config.default_controller} 九 請求參數輸出 模板支撐直接輸出Request 請求對象的方法參數,用法以下: $Request.方法名.參數 {$Request.get.id}
十 使用函數 @1 不帶參數 {$name|md5} <?php echo md5($name);?>
@2 多個參數須要調用 {$date_time|data="y-m-d",###} 第二個表示佔位符 爲變量$date_time {$data.name|substr=0,3} 第一個參數爲$data.name
{$name|md5|strtoupper|substr=0,3}
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>
十一 給變量輸出提供默認值 {$user.nickname|default="這傢伙很懶,什麼也沒留下"}
對系統變量依然能夠支持默認值輸出,例如:
{$Think.get.name|default="名稱爲空"}
默認值和函數能夠同時使用,例如: {$Think.get.name|getName|default="名稱爲空"}
十二 原樣輸出 {literal} hello,{$name} {/literal}