1. 程式人生 > >【三十五】thinkphp之視圖

【三十五】thinkphp之視圖

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方法.格式如下:

  1. display([模板文件],[字符編碼],[輸出類型])
  2. 如果不輸入參數,目錄是(當前模塊/默認視圖目錄/當前控制器/當前操作.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之視圖