PHP.MVC的模板標(biāo)簽系統(tǒng)(三)
在基本的介紹之后,我們現(xiàn)在就可以來(lái)看看模板標(biāo)簽系統(tǒng)的語(yǔ)法.
在看具體的標(biāo)簽之前,我們應(yīng)該定義什么作為我們的標(biāo)簽.為了寫(xiě)一個(gè)標(biāo)簽,我們使用<@ ... @>標(biāo)簽結(jié)點(diǎn).左標(biāo)簽(<@)和右標(biāo)簽(@>)是默認(rèn)的標(biāo)簽.如果必要的話,這些標(biāo)簽我們能夠在phpmvc-config.xml中重新定義.
模板標(biāo)簽系統(tǒng)現(xiàn)在支持以下3種標(biāo)簽:包含指令,聲明和表達(dá)式.我們現(xiàn)在來(lái)看看這些指令.
包含指令
包含指令能讓我們將內(nèi)容分隔為許多模塊,比如:頁(yè)眉,頁(yè)腳或者內(nèi)容.包含的頁(yè)面可以是HTML,或者其他標(biāo)簽?zāi)0屙?yè).據(jù)個(gè)例子,下面的包含指令能用來(lái)包含一個(gè)頁(yè)眉:
<@ include 'pageHeader.ssp' @>
一個(gè)包含指令在模板上下文種的例子:
<html>
<head>
...
</head>
<body>
<center>
<table class='pageLayoutTable'>
<tr>
<td class='pageHeader'>
<@ include 'pageHeader.ssp' @>
</td>
</tr>
<!-- PAGE CONTENTS -->
...
<!-- PAGE FOOTER -->
...
</table>
...
</center>
</body>
</html>
在這里例子種pageHeader.ssp頁(yè)眉文件內(nèi)容將被插入到主頁(yè)面上當(dāng)這個(gè)頁(yè)面被發(fā)送到用戶瀏覽器上.這個(gè)頁(yè)眉文件包含了一個(gè)表達(dá)式:
<!-- Page Header -->
<span>
<@ =viewConfig.getAppTitle @>
</span>
這個(gè)表達(dá)式將被編譯并且將在運(yùn)行時(shí)輸出為:
<!-- Page Header -->
<span>
Flash Jacks' Sleek Tab Site
</span>
聲明
聲明允許我們?cè)谀0宸N聲明一個(gè)頁(yè)面級(jí)別的變量,或者甚至其他包含頁(yè)面.一個(gè)聲明看起來(lái)像以下代碼:
<@ salesAreaID = "Central District" @>
我們能夠在模板文件中使用聲明:
<@ saleMonth = data.getValueBean('SALE_MONTH') @>
<@ saleTitle = data.getValueBean('SALE_TITLE') @>
<@ dealHeading = data.getValueBean('DEAL_HEADING') @>
<@ salesAreaID = "Central District" @>
<html>
<head>
<link rel='stylesheet' type='text/ <title>
...
</title>
</head>
<body>
...
</body>
</html>
在這里例子中,我們聲明了一些頁(yè)變量.前3個(gè)變量已經(jīng)在我們創(chuàng)建的Action類中的ActionObject中被賦值:data.getValueBean('SALE_MONTH').第4個(gè)變量被賦了一個(gè)字符串值:salesAreaID = "Central District".
聲明的變量現(xiàn)在可以在頁(yè)面中使用了:
<!-- start_page_contents_include -->
...
<!-- Content section heading -->
<h4><@=dealHeading @> <@=saleMonth @></h4>
<center>
Clearance deals
<table class='productsTable'>
...
</table>
</center>
<center>
Todays specials
<table class='productsTable'>
...
</table>
</center>
...
<!-- end_page_contents_include -->
這些頁(yè)變量將被輸出為:
<!-- Content section heading -->
<h4>Jack's Super Deals for : May 2010</h4>
...
...
表達(dá)式
表達(dá)式標(biāo)簽允許我們?cè)谀0屙?yè)中執(zhí)行表達(dá)式.表達(dá)式的結(jié)果將被包含進(jìn)模板頁(yè).以下表達(dá)式將被用來(lái)顯示一個(gè)簡(jiǎn)單的字符串(salesAreaID),也可以找回框架配置類的屬性:
<@ =salesAreaID @>
<@ =viewConfig.contactInfo @>
為了使用這些表達(dá)式,我們要在之前聲明過(guò):
<@ salesAreaID = "Central District" @>
或者在ViewResourcesConfig對(duì)象(viewConfig)的屬性在view-resources結(jié)點(diǎn)中聲明過(guò):
<view-resources
appTitle = "Flash Jacks' Sleek Tab Site"
contactInfo = "flash.jack@jackshost.com"
...
</view-resources>
當(dāng)使用表達(dá)式中的對(duì)象時(shí),我們能夠?qū)懸粋€(gè)對(duì)象-方法(object-method)聲明在標(biāo)準(zhǔn)的PHP符號(hào)或者點(diǎn)風(fēng)格的符號(hào):
The PhpMVC_Tags Object-Method Notation
PHP Style sales = data->getSales
Dot Style sales = data.getSales
With Method Params staff = data.getValueBean("STAFF")
Retrieve Data Array products = data->getValueBean("PRODUCTS_ARRAY")
在下一個(gè)單元我們將看到如何使用模板標(biāo)簽系統(tǒng)將這些結(jié)合在一起來(lái)構(gòu)建頁(yè)面.
相關(guān)文章
如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(4)
如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(4)...2006-10-10PHP的FTP學(xué)習(xí)(二)[轉(zhuǎn)自?shī)W索]
PHP的FTP學(xué)習(xí)(二)[轉(zhuǎn)自?shī)W索]...2006-10-10