淺析ThinkPHP的模板輸出功能
ThinkPHP中的每一個(gè)xxxAction.class.php文件就代表著一個(gè)應(yīng)用模塊,這個(gè)Action中的每一個(gè)方法(function)代表著一個(gè)操作,操作可以分為有輸出到模板的操作和只具執(zhí)行不需要輸出的操作。
打開Myapp/Lib/Action/IndexAction.class.php文件,我們可以看到里面的基礎(chǔ)代碼:
class IndexAction extends Action{ public function index(){ } }
對(duì)此,需要指出一下幾點(diǎn):
1.在ThinkPHP的開發(fā)中,要增加一個(gè)應(yīng)用模塊,就要在Action文件夾里建立一個(gè)類,類的文件命名格式是“模塊名稱+Action.class.php”。例如我們這里的應(yīng)用模塊是Index,所以定義文件名為IndexAction.class.php。
2.應(yīng)用模塊類的定義要繼承框架的Action類。要為這個(gè)應(yīng)用模塊添加一個(gè)操作,則定義一個(gè)以此操作為命名的function.例如上面的index操作。
通常一個(gè)應(yīng)用模塊中,會(huì)有若干操作(function)需要有與用戶交互的頁(yè)面,這就需要用到模板輸出,ThinkPHP本身已內(nèi)置了一套具有ThinkPHP特色的,很強(qiáng)大易擴(kuò)展但應(yīng)用非常方便兼簡(jiǎn)單的模板引擎。
在應(yīng)有模塊中,如果某個(gè)操作是需要頁(yè)面顯示的,只要對(duì)應(yīng)在Myapp/Tpl/default/里建立一個(gè)文件夾,文件夾以應(yīng)用模塊的名稱來(lái)命名,然后在這個(gè)文件夾下,建立一個(gè)以這個(gè)function名稱來(lái)命名的html文件,就可以在這個(gè)方法中使用$this->display()方法來(lái)直接調(diào)用該模板。(當(dāng)然也可以調(diào)用其它模塊下的其它模板或顯式指定模板文件位置和名稱,由于是循序漸進(jìn)式的學(xué)習(xí),就讓我們先忽略吧)了解這些理論后,我們先簡(jiǎn)單實(shí)操一下這些知識(shí)。
(1)在Myapp/Tpl/default/下建立一個(gè)文件夾,根據(jù)應(yīng)用模塊的名稱,我們將這個(gè)文件夾命名為Index
(2)在Myapp/Tpl/default/Index/下建立一個(gè)html文件,根據(jù)操作名稱,我們命名該文件為index.html
(3)打開Myapp/Lib/Action/IndexAction.class.php文件,修改代碼為
<?php class IndexAction extends Action{ public function index(){ $value = 'hello,ThinkPHP'; $this->assign('name',$value); $this->display(); } } ?>
(摘自手冊(cè):ThinkPHP模板指南,此后的知識(shí)要點(diǎn)均來(lái)自ThinkPHP官方手冊(cè),不再申明)
在Action類里面使用 assign方法對(duì)模板變量賦值,無(wú)論何種變量類型都統(tǒng)一使用assign賦值。
$this->assign('name',$value);
// 下面的寫法是等效的
$this->name = $value ;
// 模板變量賦值后就需要調(diào)用模板文件來(lái)輸出相關(guān)的變量,模板調(diào)用通過(guò)display方法來(lái)實(shí)現(xiàn)
$this->display();
4 打開Myapp/Tpl/default/Index/index.html文件,代碼為
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>{$name}</title> </head> <body> 測(cè)試輸出: {$name} </body> </html>
此處注意:模板變量使用{$變量名稱}這種標(biāo)簽進(jìn)行輸出。
不同的模板變量類型,使用不同的標(biāo)簽,標(biāo)簽可以自行另外定義,暫且不理會(huì)。
5 打開瀏覽器輸入地址:<http://127.0.0.1/>,我們可以看到,定義的模板變量已經(jīng)輸出來(lái)了。
附加補(bǔ)充知識(shí):
1 如果要同時(shí)輸出多個(gè)模板變量,可以使用下面的方式:
$array = array(); $array['name'] = 'thinkphp'; $array['email'] = '123456@vip.qq.com'; $array['phone'] = '123456'; $this->assign($array);
這樣,就可以在模板文件中同時(shí)輸出name、email和phone三個(gè)變量。
2 我們使用上面的變量定義,將整個(gè)數(shù)組定義為一個(gè)模板變量來(lái)輸出
$array = array(); $array['name'] = 'thinkphp'; $array['email'] = '123456@vip.qq.com'; $array['phone'] = '123456'; $this->assign('array',$array); $this->display();
在html中,要輸出$array['name']的值,代碼是
{$array.name} 或 {$array['name']}
3 將這個(gè)數(shù)組循環(huán)輸出
(1) IndexAction.class.php中代碼更改如下
<?php class IndexAction extends Action{ public function index(){ $array = array(); $array['name'] = 'thinkphp'; $array['email'] = '123456@vip.qq.com; $array['phone'] = '123456'; $value = 'hello,ThinkPHP'; $this->assign('array',$array); $this->assign('name',$value); $this->display(); } } ?>
(2) 將Myapp/Tpl/default/Index/index.html代碼更改如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>{$name}</title> </head> <body> <iterate name="array" id="vo"> {$vo}<br /> </iterate> </body> </html>
注意:name='array'是指要循環(huán)的模板變量是array,id='vo'是指這個(gè)數(shù)據(jù)在模板輸出時(shí)所使用的名稱
- thinkPHP5框架渲染模板的3種方式簡(jiǎn)述
- thinkPHP的Html模板標(biāo)簽使用方法
- ThinkPHP跳轉(zhuǎn)頁(yè)success及error模板實(shí)例教程
- ThinkPHP模板之變量輸出、自定義函數(shù)與判斷語(yǔ)句用法
- Thinkphp模板中使用自定義函數(shù)的方法
- ThinkPHP模板輸出display用法分析
- ThinkPHP模板自定義標(biāo)簽使用方法
- ThinkPHP使用smarty模板引擎的方法
- Thinkphp模板沒有解析直接原樣輸出的解決方法
- ThinkPHP模板循環(huán)輸出Volist標(biāo)簽用法實(shí)例詳解
- thinkphp5.1框架模板布局與模板繼承用法分析
相關(guān)文章
AJAX PHP無(wú)刷新form表單提交的簡(jiǎn)單實(shí)現(xiàn)(推薦)
下面小編就為大家?guī)?lái)一篇AJAX PHP無(wú)刷新form表單提交的簡(jiǎn)單實(shí)現(xiàn)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09使用PHP實(shí)現(xiàn)阻止用戶上傳成人照片或者裸照
這篇文章主要介紹了使用PHP實(shí)現(xiàn)阻止用戶上傳成人照片或者裸照,方法和思路都非常的不錯(cuò),推薦給大家,需要的朋友可以參考下2014-12-12修改Laravel自帶的認(rèn)證系統(tǒng)的User類的命名空間的步驟
今天小編就為大家分享一篇修改Laravel自帶的認(rèn)證系統(tǒng)的User類的命名空間的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP中Http協(xié)議post請(qǐng)求參數(shù)
這篇文章主要介紹了Http協(xié)議post請(qǐng)求參數(shù)的相關(guān)資料,需要的朋友可以參考下2015-11-11laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作示例
這篇文章主要介紹了laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作,結(jié)合實(shí)例形式詳細(xì)分析了laravel框架Blade 模板引擎添加新文件擴(kuò)展名具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01Thinkphp搜索時(shí)首頁(yè)分頁(yè)和搜索頁(yè)保持條件分頁(yè)的方法
這篇文章主要介紹了Thinkphp搜索時(shí)首頁(yè)分頁(yè)和搜索頁(yè)保持條件分頁(yè)的方法,以兩種不同的方式詳細(xì)分析了實(shí)現(xiàn)搜索時(shí)分頁(yè)情況下保持搜索條件的方法,是非常具有實(shí)用價(jià)值的技巧,需要的朋友可以參考下2014-12-12