ThinkPHP模版引擎之變量輸出詳解
本文實(shí)例分析了ThinkPHP模版引擎中變量輸出的用法。分享給大家供大家參考。具體分析如下:
我們已經(jīng)知道了在Action中使用assign方法可以給模板變量賦值,賦值后怎么在模板文件中輸出變量的值呢?
如果我們?cè)贏ction中賦值了一個(gè)name模板變量:
$this->assign('name',$name);
使用內(nèi)置的模板引擎輸出變量,只需要在模版文件使用:
{$name}
模板編譯后的結(jié)果就是
最后運(yùn)行的時(shí)候就可以在標(biāo)簽位置顯示ThinkPHP的輸出結(jié)果,注意模板標(biāo)簽的{和$之間不能有任何的空格,否則標(biāo)簽無(wú)效。普通標(biāo)簽?zāi)J(rèn)開(kāi)始標(biāo)記是 {,結(jié)束標(biāo)記是 },也可以通過(guò)設(shè)置TMPL_L_DELIM和TMPL_R_DELIM進(jìn)行更改,例如,我們?cè)陧?xiàng)目配置文件中定義:
'TMPL_R_DELIM'=>'}>',
那么,上面的變量輸出標(biāo)簽就應(yīng)該改成:
<{$name}>
后面的內(nèi)容我們都以默認(rèn)的標(biāo)簽定義來(lái)說(shuō)明,assign方法里面的第一個(gè)參數(shù)才是模板文件中使用的變量名稱(chēng),如果改成下面的代碼:
$this->assign('name2',$name);
再使用{$name} 輸出就無(wú)效了,必須使用 {$name2}才能輸出模板變量的值了.如果我們需要把一個(gè)用戶(hù)數(shù)據(jù)對(duì)象賦值給模板變量:
$user = $User->find(1);
$this->assign('user',$user);
也就是說(shuō)$user其實(shí)是一個(gè)數(shù)組變量,我們可以使用下面的方式來(lái)輸出相關(guān)的值:
{$user['email']} //輸出用戶(hù)的email地址
如果$user是一個(gè)對(duì)象而不是數(shù)組的話.
$User->find(1);
$this->assign('user',$User);
可以使用下面的方式輸出相關(guān)的屬性值:
{$user:email} // 輸出用戶(hù)的email地址
3.1版本以后,類(lèi)的屬性輸出方式有所調(diào)整,支持原生的PHP對(duì)象寫(xiě)法,所以上面的標(biāo)簽需要改成:
{$user->email} // 輸出用戶(hù)的email地址
為了方便模板定義,還可以支持點(diǎn)語(yǔ)法,例如,上面的
{$user['email']} // 輸出用戶(hù)的email地址
可以改成
{$user.email}
因?yàn)辄c(diǎn)語(yǔ)法默認(rèn)的輸出是數(shù)組方式,所以上面兩種方式是在沒(méi)有配置的情況下是等效的,我們可以通過(guò)配置TMPL_VAR_IDENTIFY參數(shù)來(lái)決定點(diǎn)語(yǔ)法的輸出效果,以下面的輸出為例:{$user.name}
如果TMPL_VAR_IDENTIFY設(shè)置為array,那么
{$user.name}和{$user['name']}等效,也就是輸出數(shù)組變量.
如果TMPL_VAR_IDENTIFY設(shè)置為obj,那么
{$user.name}和{$user:name}等效,也就是輸出對(duì)象的屬性。
如果TMPL_VAR_IDENTIFY留空的話,系統(tǒng)會(huì)自動(dòng)判斷要輸出的變量是數(shù)組還是對(duì)象,這種方式會(huì)一定程度上影響效率,而且只支持二維數(shù)組和兩級(jí)對(duì)象屬性。
如果是多維數(shù)組或者多層對(duì)象屬性的輸出,可以使用下面的定義方式:
或者使用
{$user:sub:name}// 輸出對(duì)象的多級(jí)屬性
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- thinkphp模板賦值與替換實(shí)例簡(jiǎn)述
- Thinkphp5.0框架視圖view的模板布局用法分析
- thinkphp5.1框架模板布局與模板繼承用法分析
- thinkPHP5框架渲染模板的3種方式簡(jiǎn)述
- 解決thinkphp5未定義變量會(huì)拋出異常,頁(yè)面錯(cuò)誤,請(qǐng)稍后再試的問(wèn)題
- thinkPHP5.0框架環(huán)境變量配置方法
- ThinkPHP模板之變量輸出、自定義函數(shù)與判斷語(yǔ)句用法
- thinkphp3.x中變量的獲取和過(guò)濾方法詳解
- thinkPHP控制器變量在模板中的顯示方法示例
- 解析thinkphp import 文件內(nèi)容變量失效的問(wèn)題
- thinkphp5.1框架模板賦值與變量輸出示例
相關(guān)文章
TP5(thinkPHP5)框架基于ajax與后臺(tái)數(shù)據(jù)交互操作簡(jiǎn)單示例
這篇文章主要介紹了TP5(thinkPHP5)框架基于ajax與后臺(tái)數(shù)據(jù)交互操作,結(jié)合實(shí)例形式分析了thinkPHP5前端基于jQuery的ajax數(shù)據(jù)提交及后臺(tái)數(shù)據(jù)接收、處理相關(guān)操作技巧,需要的朋友可以參考下2018-09-09php版微信公眾號(hào)自定義分享內(nèi)容實(shí)現(xiàn)方法
這篇文章主要介紹了php版微信公眾號(hào)自定義分享內(nèi)容實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php實(shí)現(xiàn)微信公眾號(hào)自定義分享內(nèi)容的接口調(diào)用與相關(guān)使用技巧,需要的朋友可以參考下2016-09-09laravel 實(shí)現(xiàn)關(guān)閉CSRF(全部關(guān)閉、部分關(guān)閉)
今天小編就為大家分享一篇laravel 實(shí)現(xiàn)關(guān)閉CSRF(全部關(guān)閉、部分關(guān)閉),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10CodeIgniter基于Email類(lèi)發(fā)郵件的方法
這篇文章主要介紹了CodeIgniter基于Email類(lèi)發(fā)郵件的方法,結(jié)合實(shí)例形式分析了CodeIgniter調(diào)用CI自帶的Email類(lèi)實(shí)現(xiàn)發(fā)送郵件的相關(guān)使用技巧,需要的朋友可以參考下2016-03-03php學(xué)習(xí)Eloquent修改器源碼示例解析
這篇文章主要為大家介紹了php學(xué)習(xí)Eloquent修改器源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06修改apache配置文件去除thinkphp url中的index.php
這篇文章主要介紹了修改apache配置文件去除thinkphp url中的index.php的方法,大家參考使用吧2014-01-01