ThinkPHP模版引擎之變量輸出詳解
本文實例分析了ThinkPHP模版引擎中變量輸出的用法。分享給大家供大家參考。具體分析如下:
我們已經(jīng)知道了在Action中使用assign方法可以給模板變量賦值,賦值后怎么在模板文件中輸出變量的值呢?
如果我們在Action中賦值了一個name模板變量:
$this->assign('name',$name);
使用內(nèi)置的模板引擎輸出變量,只需要在模版文件使用:
{$name}
模板編譯后的結(jié)果就是
最后運行的時候就可以在標(biāo)簽位置顯示ThinkPHP的輸出結(jié)果,注意模板標(biāo)簽的{和$之間不能有任何的空格,否則標(biāo)簽無效。普通標(biāo)簽?zāi)J(rèn)開始標(biāo)記是 {,結(jié)束標(biāo)記是 },也可以通過設(shè)置TMPL_L_DELIM和TMPL_R_DELIM進(jìn)行更改,例如,我們在項目配置文件中定義:
'TMPL_R_DELIM'=>'}>',
那么,上面的變量輸出標(biāo)簽就應(yīng)該改成:
<{$name}>
后面的內(nèi)容我們都以默認(rèn)的標(biāo)簽定義來說明,assign方法里面的第一個參數(shù)才是模板文件中使用的變量名稱,如果改成下面的代碼:
$this->assign('name2',$name);
再使用{$name} 輸出就無效了,必須使用 {$name2}才能輸出模板變量的值了.如果我們需要把一個用戶數(shù)據(jù)對象賦值給模板變量:
$user = $User->find(1);
$this->assign('user',$user);
也就是說$user其實是一個數(shù)組變量,我們可以使用下面的方式來輸出相關(guān)的值:
{$user['email']} //輸出用戶的email地址
如果$user是一個對象而不是數(shù)組的話.
$User->find(1);
$this->assign('user',$User);
可以使用下面的方式輸出相關(guān)的屬性值:
{$user:email} // 輸出用戶的email地址
3.1版本以后,類的屬性輸出方式有所調(diào)整,支持原生的PHP對象寫法,所以上面的標(biāo)簽需要改成:
{$user->email} // 輸出用戶的email地址
為了方便模板定義,還可以支持點語法,例如,上面的
{$user['email']} // 輸出用戶的email地址
可以改成
{$user.email}
因為點語法默認(rèn)的輸出是數(shù)組方式,所以上面兩種方式是在沒有配置的情況下是等效的,我們可以通過配置TMPL_VAR_IDENTIFY參數(shù)來決定點語法的輸出效果,以下面的輸出為例:{$user.name}
如果TMPL_VAR_IDENTIFY設(shè)置為array,那么
{$user.name}和{$user['name']}等效,也就是輸出數(shù)組變量.
如果TMPL_VAR_IDENTIFY設(shè)置為obj,那么
{$user.name}和{$user:name}等效,也就是輸出對象的屬性。
如果TMPL_VAR_IDENTIFY留空的話,系統(tǒng)會自動判斷要輸出的變量是數(shù)組還是對象,這種方式會一定程度上影響效率,而且只支持二維數(shù)組和兩級對象屬性。
如果是多維數(shù)組或者多層對象屬性的輸出,可以使用下面的定義方式:
或者使用
{$user:sub:name}// 輸出對象的多級屬性
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
相關(guān)文章
Thinkphp 框架擴(kuò)展之標(biāo)簽庫驅(qū)動原理與用法分析
這篇文章主要介紹了Thinkphp 框架擴(kuò)展之標(biāo)簽庫驅(qū)動,結(jié)合實例形式分析了Thinkphp標(biāo)簽庫驅(qū)動擴(kuò)展相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04
PHP分頁初探 一個最簡單的PHP分頁代碼的簡單實現(xiàn)
下面小編就為大家?guī)硪黄狿HP分頁初探 一個最簡單的PHP分頁代碼的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
用HTML/JS/PHP方式實現(xiàn)頁面延時跳轉(zhuǎn)的簡單實例
下面小編就為大家?guī)硪黄肏TML/JS/PHP方式實現(xiàn)頁面延時跳轉(zhuǎn)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07
ThinkPHP5.0多個文件上傳后找不到臨時文件的修改方法
這篇文章主要介紹了ThinkPHP5.0多個文件上傳后找不到臨時文件的修改方法,需要的朋友可以參考下2018-07-07
PHP讀取CSV大文件導(dǎo)入數(shù)據(jù)庫的實例
下面小編就為大家?guī)硪黄狿HP讀取CSV大文件導(dǎo)入數(shù)據(jù)庫的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07

