ThinkPHP視圖

視圖目錄/[模板主題/]控制器名/操作名+模板後綴

設置默認視圖層不是View:
    'DEFAULT_V_LAYER' => 'Template', // 設置默認的視圖層名稱
模板文件的默認後綴的情況是.html,也可以通過 TMPL_TEMPLATE_SUFFIX 來配置成其他的。
        'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
如果覺得目錄結構太深,可以通過設置 TMPL_FILE_DEPR 參數來配置簡化模板的目錄層次
        'TMPL_FILE_DEPR'=>'_'
模塊的配置文件中單獨定義視圖目錄:
        'VIEW_PATH'=>'./Theme/'

模板賦值

$this->assign('name',$value); // assign方法賦值給模板

//賦值後,就可以在模板文件中輸出變量了,如果使用的是內置模板的話,就可以這樣輸出: {$name}


模板渲染

display('[模板文件]'[,'字符編碼'][,'輸出類型'])

調用模板主題功能:$this->theme('blue')->display('User:edit');

獲取模板地址

T([資源://][模塊@][主題/][控制器/]操作,[視圖分層])

T函數的返回值是一個完整的模板文件名,可以直接用於display和fetch方法進行渲染輸出。

Eg:
  1. T('Public/menu');
  2. // 返回 當前模塊/View/Public/menu.html
  3. T('blue/Public/menu');
  4. // 返回 當前模塊/View/blue/Public/menu.html
  5. T('Public/menu','Tpl');
  6. // 返回 當前模塊/Tpl/Public/menu.html
  7. T('Public/menu');
  8. // 如果TMPL_FILE_DEPR 爲 _ 返回 當前模塊/Tpl/Public_menu.html
  9. T('Public/menu');
  10. // 如果TMPL_TEMPLATE_SUFFIX 爲.tpl 返回 當前模塊/Tpl/Public/menu.tpl
  11. T('Admin@Public/menu');
  12. // 返回 Admin/View/Public/menu.html
  13. T('Extend://Admin@Public/menu');
  14. // 返回 Extend/Admin/View/Public/menu.html (Extend目錄取決於AUTOLOAD_NAMESPACE中的配置)

在display方法中直接使用T函數:

  1. // 使用T函數輸出模板
  2. $this->display(T('Admin@Public/menu'));//T函數可以輸出不同的視圖分層模板

獲取內容

 ------- 需要獲取渲染模板的輸出內容而不是直接輸出
fetch('模板文件' );
  *** fetch() 和 display() 的區別 fetch方法渲染後不是直接輸出,而是返回渲染後的內容,

渲染內容

show( '渲染內容'[,'字符編碼'][,'輸出類型'] );
$this->show($content, 'utf-8', 'text/xml');

模板引擎:
只需要設置TMPL_ENGINE_TYPE參數爲相關的模板引擎名稱即可:
 eg:  'TMPL_ENGINE_TYPE' =>'PHP'

模板變量:
普通變量:
   配置變量標籤起始標記:
        'TMPL_L_DELIM'=>'<{',
        'TMPL_R_DELIM'=>'}>',
    {$var}    //注意模板標籤的{$之間不能有任何的空格,否則標籤無效。
    
系統變量:
    常量:{$Think.MODULE_NAME}
    配置:{$Think.config.db_charset}  {$Think.config.url_model}
    語言:{$Think.lang.page_error}    {$Think.lang.var_error}

模板函數:( 函數過濾 )
   md5 : {$data[ 'name' ]|md5}
   date:{$data['time']|date="y-m-d",###}
   substr:{$data['conmtent']|substr=0,3}
 ****** 支持多個函數過濾 用 | 分割開來
{$name|md5|strtoupper|substr=0,3} 或者{:substr(strtoupper(md5($name)),0,3)}
默認輸出值: 採用 default = "" 來設置。

三元運算:
{$status?'正常':'錯誤'}
{$info['status']?$info['msg']:$info['error']}


模板內置標籤:

Volist標籤:通常用於查詢數據集(select方法)的結果輸出,通常模型的select方法返回的結果是一個二維數組,可以直接使用volist標籤進行輸出。
<volist name="list" id="vo"></volist>
name屬性表示模板賦值的變量名稱,id表示當前的循環變量,可以隨意指定
輸出查詢結果中的部分數據,例如輸出其中的第5~15條記錄:
    <volist name="list" id="vo" offset="5" length='10'>
        {$vo.name}
    </volist>

輸出偶數記錄:

    <volist name="list" id="vo" mod="2" >
        <eq name="mod" value="1">{$vo.name}</eq>
    </volist>
Mod屬性還用於控制一定記錄的換行:
    <volist name="list" id="vo" mod="5" >
        {$vo.name}
        <eq name="mod" value="4"><br/></eq>
     </volist>
空的時候輸出提示:
    <volist name="list" id="vo" empty="暫時沒有數據" >
        {$vo.id}|{$vo.name}
     </volist>
要輸出數組的索引,可以直接使用key變量:( 和循環變量不同的是,這個key是由數據本身決定,而不是循環控制的 )
    <volist name="list" id="vo" >
        {$key}.{$vo.name}
    </volist>

Foreach標籤:name表示數據源 item表示循環變量。
    <foreach name="list" item="vo" ></foreach>
定義索引的變量名:
    <foreach name="list" item="vo" key="k" >
        {$k}|{$vo.id}:{$vo.name}
    </foreach>

For標籤:
<for start="開始值" end="結束值" comparison="" step="步進值" name="循環變量名" ></for>
開始值、結束值、步進值和循環變量都可以支持變量,開始值和結束值是必須,其他是可選。comparison 的默認值是lt;;name的默認值是i,步進值的默認值是1

IF標籤:
    <if condition="($name eq 1) OR ($name gt 100) "> value1
    <elseif condition="$name eq 2"/>value2
    <else /> value3
    </if>
    1在condition屬性中可以支持eq等判斷表達式,同上面的比較標籤,但是不支持帶有”>”、”<”等符號的用法,因爲會混淆模板解析
    2 condition屬性裏面使用php代碼

Switch標籤:
    <switch name="變量" >
    <case value="值1" break="0或1">輸出內容1</case>
    <case value="值2">輸出內容2</case>
    <default />默認情況
    </switch>
1 name屬性可以使用函數以及系統變量
2 case的value屬性可以支持多個條件的判斷,使用”|”進行分割
3 case的value屬性使用變量
發佈了122 篇原創文章 · 獲贊 112 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章