亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

thinkphp3.x中display方法及show方法的用法實例

2024-05-04 23:46:13
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了thinkphp3.x中display方法及show方法的用法,結合實例形式分析了thinkPHP3.x模板的功能、定義、賦值、渲染及輸出等技巧,需要的朋友可以參考下
 

本文實例講述了thinkphp3.x中display方法及show方法的用法。分享給大家供大家參考,具體如下:

通過前面的文章在了解了控制器和模型操作后,我們開始熟悉視圖部分,ThinkPHP中的視圖主要就是指模板文件和模板引擎,本篇首先了解下模板文件以及是如何進行渲染輸出的。

一、模板定義

為了對模板文件更加有效的管理,ThinkPHP對模板文件進行目錄劃分,默認的模板文件定義規則是:

模板目錄/[分組名/][模板主題/]模塊名/操作名+模板后綴

模板目錄默認是項目下面的Tpl, 當定義分組的情況下,會按照分組名分開子目錄,新版模板主題默認是空(表示不啟用模板主題功能),

模板主題功能是為了多模板切換而設計的,如果有多個模板主題的話,可以用DEFAULT_THEME參數設置默認的模板主題名。

在每個模板主題下面,是以項目的模塊名為目錄,然后是每個模塊的具體操作模板文件,例如:

User模塊的add操作 對應的模板文件就應該是:

Tpl/User/add.html

模板文件的默認后綴是.html,也可以通過TMPL_TEMPLATE_SUFFIX來配置成其他的。例如,我們可以配置:

'TMPL_TEMPLATE_SUFFIX'=>'.tpl'

定義后,User模塊的add操作 對應的模板文件就變成是:

Tpl/User/add.tpl

如果項目啟用了模塊分組功能(假設User模塊屬于Home分組),那么默認對應的模板文件可能變成 :

Tpl/Home/User/add.html

分組模式下面,如果覺得目錄結構太深,可以通過設置TMPL_FILE_DEPR參數來配置簡化模板的目錄層次,例如設置:

'TMPL_FILE_DEPR'=>'_'

默認的模板文件就變成了:

Tpl/Home/User_add.html

正是因為系統有這樣一種模板文件自動識別的規則,所以給我們的模板渲染輸出帶來了簡化。

二、模板渲染

模板定義后就可以通過display和show方法來渲染輸出。其中display方法需要我們有定義模板文件,而show方法則是直接渲染內容輸出。

最常用的是display方法,調用格式:

第一種:

display('[主題:][模塊:][操作]'[,'字符編碼'][,'輸出類型'])

第二種:

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

下面是一個最典型的用法,不帶任何參數:

$this->display();

表示系統會按照默認規則自動定位模板文件,所以通常display方法無需帶任何參數即可輸出對應的模板,這是模板輸出的最簡單的用法。

如果沒有按照模板定義規則來定義模板文件,或者我需要調用其他模塊下面的某個模板,可以使用:

$this->display('edit'); 

表示調用當前模塊下面的edit模板

$this->display('Member:read'); 

表示調用Member模塊下面的read模板。

如果我們使用了模板主題功能,那么也可以支持跨主題調用,使用:

$this->display('theme:User:edit'); 

表示調用theme主題下面的User模塊的edit模板。

這種方式的渲染輸出不需要寫模板文件的路徑和后綴,確切地說,這里面的模塊和操作并不一定需要有對應的模塊或者操作,只是一個目錄名稱和文件名稱而已,例如,你的項目里面可能根本沒有Public模塊,更沒有Public模塊的menu操作,但是一樣可以使用

$this->display('Public:menu'); 

輸出這個模板文件。理解了這個,模板輸出就清晰了。

display方法支持在渲染輸出的時候指定輸出編碼和類型,例如:

$this->display('read', 'utf-8', 'text/xml'); 

表示輸出XML頁面類型(配合你的應用需求可以輸出很多類型)。

事情總有特例,如果模板目錄是自定義的,或者根本不需要按模塊進行分目錄存放,那么默認的display渲染規則就不能處理,這個時候,我們就需要使用另外一種方式來應對,直接傳入模板文件名即可,例如:

$this->display('./Public/menu.html');

這種方式需要指定模板路徑和后綴,這里的Public目錄是位于當前項目入口文件位置下面。如果是其他的后綴文件,也支持直接輸出,例如:

$this->display('./Public/menu.tpl');

只要./Public/menu.tpl是一個實際存在的模板文件。

要注意模板文件位置是相對于項目的入口文件,而不是模板目錄。

還有一種情況是,你需要獲取渲染模板的輸出內容,就可以使用fetch方法,fetch方法的用法和display基本一致,區別就在于fetch方法渲染后不是直接輸出,而是返回渲染后的內容,例如:

$content = $this->fetch('Member:edit');

使用fetch方法獲取渲染內容后,你可以進行過濾和替換等操作,用于對模板輸出的復雜需求。

如果你沒有定義任何模板文件,或者把模板內容存儲到數據庫中的話,你就需要使用show方法來渲染輸出了,show方法的調用格式:

show('渲染內容'[,'字符編碼'][,'輸出類型'])

例如,

$this->show($content);

也可以指定編碼和類型:

$this->show($content, 'utf-8', 'text/xml'); 

show方法中的內容也可以支持模板解析。

三、模板賦值

我們知道了如何渲染模板輸出,但是如果要在模板中輸出變量,必須在在控制器中把變量傳遞給模板,提供了assign方法對模板變量賦值,無論何種變量類型都統一使用assign賦值。

$this->assign('name',$value);//下面的寫法是等效的://$this->name = $value;

assign方法必須在display和show方法之前調用,并且系統只會輸出設定的變量,其它變量不會輸出(系統變量可以通過特殊的標簽輸出,可以無需賦值模板變量),一定程度上保證了變量的安全性。

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

{$name}

如果要同時輸出多個模板變量,可以使用下面的方式:

$array['name'] = 'thinkphp'; $array['email'] = 'liu21st@gmail.com'; $array['phone'] = '12335678'; $this->assign($array);

這樣,就可以在模板文件中同時輸出name、email和phone三個變量。

模板變量的輸出根據不同的模板引擎有不同的方法,我們在后面會專門講解內置模板引擎的用法。如果你使用的是PHP本身作為模板引擎的話 ,就可以直接在模板文件里面輸出了:

<?php echo $name.'['.$email.''.$phone.']';?>

如果采用內置的模板引擎,可以使用:

{$name} [ {$email} {$phone} ]

輸出同樣的內容。

關于更多的模板標簽使用,我們會在后面模板標簽中詳細講解。

四、模板替換

在進行模板輸出之前,系統還可以對渲染的模板結果進行一些模板的特殊字符串替換操作,也就是實現了模板輸出的替換和過濾。這個機制可以使得模板文件的定義更加方便,默認的替換規則有:

../Public: 會被替換成當前項目的公共模板目錄 通常是 /項目目錄/Tpl/當前主題/Public/

__TMPL__: 會替換成項目的模板目錄 通常是 /項目目錄/Tpl/當前主題/

(注:為了部署安全考慮,../Public和__TMPL__不再建議使用)

__PUBLIC__:會被替換成當前網站的公共目錄 通常是 /Public/

__ROOT__: 會替換成當前網站的地址(不含域名)

__APP__: 會替換成當前項目的URL地址 (不含域名)

__GROUP__:會替換成當前分組的URL地址 (不含域名)

__URL__: 會替換成當前模塊的URL地址(不含域名)

__ACTION__:會替換成當前操作的URL地址 (不含域名)

__SELF__: 會替換成當前的頁面URL

注意這些特殊的字符串是嚴格區別大小寫的,并且這些特殊字符串的替換規則是可以更改或者增加的,我們只需要在項目配置文件中配置TMPL_PARSE_STRING就可以完成。如果有相同的數組索引,就會更改系統的默認規則。例如:

'TMPL_PARSE_STRING' =>array(   '__PUBLIC__' => '/Common', // 更改默認的/Public 替換規則   '__JS__' => '/Public/JS/', // 增加新的JS類庫路徑替換規則   '/Uploads' => '/Uploads', // 增加新的上傳路徑替換規則 )

有了模板替換規則后,頁面上所有的__PUBLIC__ 字符串都會被替換,那如果確實需要輸出__PUBLIC__ 字符串到模板呢,我們可以通過增加替換規則的方式,例如:

'TMPL_PARSE_STRING' =>array(   '--PUBLIC--' => '__PUBLIC__', // 采用新規則輸出/Public字符串 )

這樣增加替換規則后,如果我們要輸出__PUBLIC__ 字符串,只需要在模板中添加--PUBLIC--,其他替換字符串的輸出方式類似。

五、總結

通過本篇的學習,我們大概掌握了如何定義模板文件和進行模板渲染輸出,以及如何賦值模板變量,后面我們將會學習如何在模板文件中使用標簽來簡化你的書寫。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠躁夜夜躁久久躁别揉| 国产精品中文久久久久久久| 亚洲精品视频在线观看视频| 色综合男人天堂| 国产噜噜噜噜久久久久久久久| 米奇精品一区二区三区在线观看| 色噜噜亚洲精品中文字幕| 欧美猛男性生活免费| 欧美视频在线看| 91视频国产高清| 国产一区私人高清影院| 欧美精品在线极品| 97涩涩爰在线观看亚洲| 国产激情999| 亚洲精品综合久久中文字幕| 成人精品久久久| 日韩av最新在线观看| 国产精品va在线播放| 欧美精品18videos性欧美| 国产国语videosex另类| 人人做人人澡人人爽欧美| 久久久久久久久久久久久久久久久久av| 九九热精品视频国产| 欧美性xxxxxxxxx| 国产深夜精品福利| 一区二区三区视频在线| 国产精品午夜一区二区欲梦| 黄网站色欧美视频| 精品综合久久久久久97| 亚洲影院污污.| 成人亚洲激情网| 亚洲精品720p| 91精品视频专区| 成人h片在线播放免费网站| 欧美日韩美女在线| 国产亚洲精品va在线观看| 欧美疯狂性受xxxxx另类| 最好看的2019年中文视频| 欧美激情精品久久久久久免费印度| 精品成人乱色一区二区| 国产精品久久久久免费a∨大胸| 国产精品无码专区在线观看| 亚洲精品理论电影| 欧洲成人性视频| 国产精品欧美日韩一区二区| 欧美日本高清一区| 国产精品毛片a∨一区二区三区|国| 日韩中文字幕在线看| 欧美精品videosex性欧美| 欧美激情国内偷拍| 日韩av在线网站| 1769国内精品视频在线播放| 亚洲国产精品久久91精品| 国产精品夜色7777狼人| 亚洲性猛交xxxxwww| 在线观看中文字幕亚洲| 777国产偷窥盗摄精品视频| 成人激情电影一区二区| 伊人伊人伊人久久| 亚洲人成电影网站色| 国产成人在线播放| 大量国产精品视频| 日韩精品视频在线免费观看| 久久久久久久爱| 亚洲黄色有码视频| 国产日韩在线播放| 国产精品美女视频网站| 亚洲免费视频在线观看| 亚洲在线观看视频网站| 日韩亚洲在线观看| 亚洲美女精品成人在线视频| 国产成人精品午夜| 亚洲娇小xxxx欧美娇小| 中文字幕亚洲情99在线| 欧美日韩国产中文精品字幕自在自线| 久久久女女女女999久久| 国产成人精品综合久久久| 日韩国产精品亚洲а∨天堂免| 一本色道久久88精品综合| 国产成人自拍视频在线观看| 国产aaa精品| 欧美在线中文字幕| 欧美极品第一页| 主播福利视频一区| 欧美激情一二三| 久久艳片www.17c.com| 国内精品小视频在线观看| 国产欧美精品久久久| 国产一区二区日韩精品欧美精品| 欧美日韩国产成人在线| 久久亚洲精品国产亚洲老地址| 中文字幕久精品免费视频| 国产成人在线亚洲欧美| 国产91|九色| 777国产偷窥盗摄精品视频| 亚洲www视频| 一本色道久久88亚洲综合88| 欧美成人免费视频| 亚洲午夜久久久久久久| 国内精品久久影院| 欧美激情精品久久久| 成人在线精品视频| 日本午夜人人精品| 欧美伊久线香蕉线新在线| 人人做人人澡人人爽欧美| 91精品在线看| 亚洲欧美国产制服动漫| 亚洲国产精品视频在线观看| 国产精品99久久久久久白浆小说| 国产专区欧美专区| 国产精品自拍偷拍视频| 欧美激情精品久久久久久大尺度| 欧美在线视频网站| 亚洲最大的成人网| 欧美在线日韩在线| 亚洲午夜激情免费视频| 日韩欧美一区二区在线| 97免费中文视频在线观看| 精品国产91乱高清在线观看| 亚洲国产古装精品网站| 久久九九全国免费精品观看| 日韩av综合网站| 91免费人成网站在线观看18| 911国产网站尤物在线观看| 欧美激情精品久久久| 国产精品福利片| 精品亚洲一区二区| 亚洲国产高潮在线观看| 日本欧美一级片| 亚洲性视频网站| 国产精品av电影| 成人高清视频观看www| 欧美www在线| 2025国产精品视频| 日韩激情片免费| 久久久电影免费观看完整版| 大伊人狠狠躁夜夜躁av一区| 国产精品偷伦免费视频观看的| 欧美猛交免费看| 国产精自产拍久久久久久蜜| 国产精品91在线| 日韩美女免费观看| 欧美日韩成人黄色| 日韩国产精品视频| 久久精品人人做人人爽| 最近免费中文字幕视频2019| 性欧美在线看片a免费观看| 国产精品视频导航| 91大神福利视频在线| 日韩亚洲精品视频| 亚洲欧美中文在线视频| 久久香蕉精品香蕉| 成人国产精品久久久| 成人精品久久一区二区三区| 91精品视频在线免费观看| 亚洲影视中文字幕| 日产精品99久久久久久| 亚洲男人天堂视频| 91社影院在线观看| 亚洲欧美日韩在线高清直播| 国产精品人成电影在线观看| 午夜精品www| 久久天天躁日日躁| 亚洲精品suv精品一区二区|