【三十五】thinkphp之視圖
阿新 • • 發佈:2018-01-21
emp div spl 過濾 span this think pub 輸出類型
1.模板定義
視圖屬於mvc中的v。一般是html結合php獲取的數據提供給用戶使用。
- 每個模板的文件都是獨立的(文件名與控制器名稱必須一樣)
- 默認的模板文件規則是視圖目錄/[模板主題]控制器/操作名+模板後綴(http://localhost/basic_thinkphp/index.php/Home/User1/index)
//在controller目錄下user控制器下index方法輸入 //對應的目錄為/Weibo/Home/View/User1/index.html //渲染模版輸出 $this->display();
在view目錄下需存在user1/index.html.即可渲染出來
修改模板的一些配置.在common/conf/config.php中修改:
//修改模版的視圖目錄 ‘DEFAULT_V_LAYER‘ =>‘View‘, //修改模版中的文件的後綴 ‘TMPL_TEMPLATE_SUFFIX‘=>‘.tpl‘, //用下劃線代替目錄層次 ‘TMPL_FILE_DEPR‘=>‘_‘, //User_index.tpl //設置外部的模版目錄 ‘VIEW_PATH‘=>‘./Public/‘, //設置默認主題目錄 ‘DEFAULT_THEME‘=>‘default‘,
在controller/usercontroller.class.php輸入此行,即可切換主題.:(主題是你可以在配置文件中修改的)
// 切換主題 $this->theme(‘blue‘)->display();
2.賦值(assign)與渲染(display)
thinkphp提供了assign方法對模板變量賦值,無論哪種變量類型都統一使用assign賦值
//給模版傳遞一個變量 $this->assign(‘user‘, ‘蠟筆小新‘); //模版中調用變量 {$user} //PS:這個方法必須在 display()方法之前使用,保存變量正確傳遞。
渲染模板使用的是display方法.格式如下:
- display([模板文件],[字符編碼],[輸出類型])
- 如果不輸入參數,目錄是(當前模塊/默認視圖目錄/當前控制器/當前操作.html)
//不傳參數 // ./Weibo/Home/View/default/User/index.tpl $this->display(); //修改默認模版 // ./Weibo/Home/View/default/User/add.tpl $this->display(‘add‘); //修改默認模版,目錄加模版 // ./Weibo/Home/View/default/Bbb/add.tpl $this->display(‘Bbb/add‘); //修改默認模版,模塊加目錄加模版 // ./Weibo/Admin/View/default/Bbb/add.tpl $this->display(‘Admin@Bbb/add‘); //修改默認模版,主題加目錄加模版 // ./Weibo/Home/View/blue/Bbb/add.tpl $this->theme(‘blue‘)->display(‘Bbb/add‘); //修改默認模版,自定義模版 // ./Template/Public/add.tpl $this->display(‘./Template/Public/add.tpl‘); //Template 和 Weibo 同級 //修改默認模版,指定編碼和文件類型,一般不用填寫,默認即可 $this->display(‘add‘, ‘utf-8‘, ‘text/xml‘)
3.模板地址
thinkphp封裝了一個T函數,專門用於生成模板文件.格式如下:
- T([資源://][模塊@][主題/][控制器/]操作,[視圖分層]);
//輸出當前模版地址 echo T(); //結合上面講的所有定義方法來自定義模版: echo T(‘Public/add‘) echo T(‘Admin@index‘); echo T(‘Admin@Public/add‘, ‘Template‘); //直接使用T函數輸出 $this->display(T());
4.獲取內容
如果需要獲取模版的內容,可以使用 fetch()方法,這個方法的使用和 display()方法一致
//獲取模版裏的內容 $content = $this->fetch(); var_dump($content); //通過內容再渲染輸出 $this->show($content); //PS:使用 fetch()方法獲取內容,主要是為了可以處理和過濾更加復雜的內容。然後 處理後再由 show()方法輸出。
【三十五】thinkphp之視圖