PHP.MVC的模板標(biāo)簽系統(tǒng)(4)_PHP教程
推薦:mysql 時(shí)間轉(zhuǎn)換函數(shù)的用法mysql 時(shí)間轉(zhuǎn)換函數(shù)的用法2007-10-31 15:03DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對(duì)應(yīng)于ODBC標(biāo)準(zhǔn)。 mysql> select DAYOFW
頁(yè)面布局
在這個(gè)單元中我們將看到如何使用模板標(biāo)簽系統(tǒng)構(gòu)造一個(gè)標(biāo)準(zhǔn)的模板頁(yè)面。這個(gè)例子我們使用了一個(gè)簡(jiǎn)單的HTML頁(yè)面布局,請(qǐng)看下圖:

這個(gè)頁(yè)面有多個(gè)標(biāo)準(zhǔn)單元組成,就像頁(yè)面設(shè)計(jì)者和開(kāi)發(fā)者熟悉的那樣.這個(gè)頁(yè)面的主體由3個(gè)包含的單元組成:頁(yè)眉,頁(yè)內(nèi)容主體和頁(yè)腳.我們現(xiàn)在就看看這些單元并且了解如何使用模板標(biāo)簽系統(tǒng)來(lái)實(shí)現(xiàn).
頁(yè)主體
下面的代碼單元顯示的是主體:
| The Page Body Layout 1 <@ saleMonth= data.getValueBean('SALE_MONTH') @> <@ saleTitle= data.getValueBean('SALE_TITLE') @> <@ dealHeading = data.getValueBean('DEAL_HEADING') @> <@ salesAreaID = "Central District" @> <html> <table class='pageLayoutTable'> <!-- PAGE HEADER --> <!-- PAGE CONTENTS --> <!-- PAGE FOOTER --> </body> |
1:頁(yè)聲明
第一個(gè)有趣的條目是頁(yè)頂部的頁(yè)聲明(1).我們?cè)陧?yè)面開(kāi)始聲明了這些變量,因此這些變量將能在下面的頁(yè)面和像頁(yè)眉那樣的包含頁(yè)所使用.
2:頁(yè)標(biāo)題
下一步我們使用表達(dá)式來(lái)初始化頁(yè)面標(biāo)題(2).這個(gè)值能夠從配置文件中view-resources元素利用ViewResourcesConfig->getAppTitle來(lái)得到:
| <view-resources appTitle = "Flash Jacks' Sleek Tab Site" ... </view-resources> |
3:頁(yè)眉
頁(yè)眉是下一個(gè)有趣的條目(3).在這里我們使用包含指令來(lái)插入頁(yè)眉模板文件到頁(yè)主體中.我們將在下一個(gè)子單元中來(lái)看一看頁(yè)眉.
我們僅僅使用了頁(yè)面直接去讀取頁(yè)眉,不論頁(yè)的組件存儲(chǔ)在哪里.這是一個(gè)好機(jī)會(huì)來(lái)介紹模板標(biāo)簽系統(tǒng)的目錄設(shè)置.默認(rèn)情況下,模板目錄布局如下所示(注意這些路徑相對(duì)于我們的應(yīng)用程序):
| The Default PhpMVC_Tags Template Directory Layout Paths (relative) The Template Files './WEB-INF/tpl' The Compiled Template Files './WEB-INF/tpl_C' |
如果需要的話我們可以在配置文件的view-resources結(jié)點(diǎn)來(lái)重新定義他們,就像這樣:
| <view-resources ... tplDir = "./WEB-INF/tpl-admin" tplDirC = "./WEB-INF/tpl_admin_C" ... </view-resources> |
4:頁(yè)內(nèi)容主體
這是另外一個(gè)包含指令被用來(lái)插入模板文件(4)到主體中.注意包含的文件位于模板目錄的sales子目錄中:
| "./WEB-INF/tpl/sale/pageContent.ssp" |
5:頁(yè)腳
又是一個(gè)包含指令,就像頁(yè)眉一樣.
頁(yè)眉單元
在這個(gè)例子中頁(yè)眉模板文件('pageHeader.ssp')只是一個(gè)簡(jiǎn)單的單元,就像這樣:
| <!-- Page Header --> <span> <@ =viewConfig.getAppTitle @> </span> |
當(dāng)主體頁(yè)面(包括包含的頁(yè)面)被編譯的時(shí)候,頁(yè)眉的表達(dá)式被轉(zhuǎn)換成下面這樣:
| <!-- Page Header --> <span> <?php print $viewConfig->getAppTitle(); ?> </span> |
被編譯的頁(yè)面被存儲(chǔ)在編譯模板目錄中,就像上面所說(shuō)的,默認(rèn)的編譯模板目錄是:
| './WEB-INF/tpl_C' |
頁(yè)內(nèi)容主體單元
頁(yè)內(nèi)容主體模板文件有一點(diǎn)復(fù)雜.文件('sale/pageContent.ssp')內(nèi)容顯示如下:
|
... 2 3 4 <b>Our Staff at Your Service</b> |
1:一些更多的聲明
在頁(yè)面頂部所顯示的額外聲明(1)能讓我們聲明頁(yè)變量以便下面能夠使用.在內(nèi)容被處理之后,這些聲明將在編譯后像下面這樣顯示:
| <?php $item1=$data->getValueBean("ITEM_1"); ?> ... <?php $products=$data->getValueBean("PRODUCTS_ARRAY"); ?> |
2:使用表達(dá)式來(lái)顯示內(nèi)容單元標(biāo)題
現(xiàn)在我們使用兩個(gè)表達(dá)式(2)來(lái)顯示內(nèi)容單元的標(biāo)題.注意我們聲明這些變量是"全局"變量在主頁(yè)面的頂部.處理完后,表達(dá)式將轉(zhuǎn)換這些代碼,就像這樣:
| <?php print $dealHeading; ?> <?php print $saleMonth; ?> |
當(dāng)頁(yè)面被顯示到用戶的瀏覽器中,內(nèi)容單元的標(biāo)題看起來(lái)就像這樣:
| Jack's Super Deals for : May 2010. |
3:使用表達(dá)式來(lái)顯示一些數(shù)據(jù)條目
現(xiàn)在我們能顯示一些實(shí)際的數(shù)據(jù)(3).在這個(gè)頁(yè)內(nèi)容主體單元中我們?cè)L問(wèn)一些在PhpMVCTabAction類(lèi)的ActionObject中的產(chǎn)品條目數(shù)據(jù).一個(gè)簡(jiǎn)化版的PhpMVCTabAction類(lèi)在下面展示:
|
class PhpMVCTabAction extends Action { // Define some strings we need on our View template page // Save the string variables to our Value object // Some float values we could receive from a database query // Setup some clearance deals (individual object instances): // Todays specials (array of object instances) // Our staff // Save the Value object |
在上面的代碼中,我們能看到$item1被創(chuàng)建并被保存成ActionObject的valueBeans條目.Bean數(shù)據(jù)條目現(xiàn)在能在模板頁(yè)面中被重新獲得:
| <@ item1=data->getValueBean("ITEM_1") @> |
我們可以像下面那樣顯示條目的值:
| <@ =item1.getName @> ... <@ =item1.getCost @> |
4:顯示數(shù)組
我們也可以直接使用一些PHP代碼在我們的模板頁(yè)上.在這個(gè)分離的MVC模式中,我們應(yīng)該僅在這里編寫(xiě)代碼去操縱這些通過(guò)ActionObject和ViewResourcesConfig實(shí)例(可能我們的自定義Bean也可以)提供的數(shù)據(jù).在上面的也內(nèi)容單元('sale/pageContent.ssp')中,我們使用一個(gè)PHP的foreach語(yǔ)法(4)來(lái)循環(huán)讀取$products數(shù)組.我們能在上面的PhpMVCTabAction類(lèi)中看到$products數(shù)組被創(chuàng)建并被保存在ActionObject中,就和上面的$item1 Bean相似.在foreach循環(huán)中我們能使用表達(dá)式來(lái)顯示產(chǎn)品數(shù)據(jù):
| <?php foreach($products as $item) { ?> <tr> <td class='prodItemDesc'> <@ =item.getName @> </td> <td class='prodItemValue'> <@ =item.getCost @> </td> </tr> <?php } ?> |
5:顯示ViewResourcesConfig屬性
最后我們從view-resources元素所定義的ViewResourcesConfig屬性來(lái)顯示"Area Manager"(5)在我們的內(nèi)容頁(yè):
|
<view-resources <!-- We can set some properties on our custom ViewResourcesConfig class--> |
但是注意在這個(gè)例子中我們使用了一個(gè)繼承ViewResourcesConfig類(lèi)的對(duì)象(MyViewResourcesConfig)來(lái)設(shè)置一些自定義的屬性.我們定義了一個(gè)擴(kuò)展ViewResourcesConfig類(lèi)的對(duì)象,在配置文件里使用className="MyViewResourcesConfig"屬性,并且MyViewResourcesConfig類(lèi)定義在文件"MyViewResourcesConfig.php"中.MyViewResourcesConfig類(lèi)(classes/MyViewResourcesConfig.php)實(shí)現(xiàn)了setter/getter方法去處理自定義屬性("areaManager"),這個(gè)屬性我們?cè)趘iew-resources結(jié)點(diǎn)中定義:
|
class MyViewResourcesConfig extends ViewResourcesConfig { // ----- Properties ----------------------------------------------------- // var $areaManager = ''; function getAreaManager() { function setAreaManager($areaManager) { |
我們現(xiàn)在能使用表達(dá)式在我們的頁(yè)面上實(shí)現(xiàn)"Area Manager"了:
| <@ =viewConfig.getAreaManager @> |
注意:在真實(shí)的應(yīng)用程序中數(shù)據(jù)能從關(guān)系型數(shù)據(jù)庫(kù)中得到.
頁(yè)腳單元
頁(yè)腳單元和上面討論過(guò)的頁(yè)眉單元的處理相類(lèi)似.頁(yè)腳模板文件('tpl/pageFooter.ssp')就像這樣:
| <!-- Page Footer --> <span> <@ =viewConfig.getCopyright @> </span> |
當(dāng)主體頁(yè)面(包括包含的頁(yè)面)被編譯,在頁(yè)腳中的表達(dá)式被轉(zhuǎn)換成下面這樣:
| <!-- Page Footer --> <span> <?php print $viewConfig->getCopyright(); ?> </span> |
編譯的頁(yè)眉頁(yè)面被存儲(chǔ)在編譯模板目錄.默認(rèn)的編譯模板目錄是:
|
'./WEB-INF/tpl_C' |
分享:使用.htaccess來(lái)防盜鏈先解釋一下圖片防盜鏈和轉(zhuǎn)向: 圖片防盜鏈有什么用? 防止其它網(wǎng)站盜用你的圖片,浪費(fèi)你寶貴的流量。 圖片轉(zhuǎn)向有什么用? 如果你的網(wǎng)站以圖片為主,哪天發(fā)現(xiàn)月底沒(méi)到流量就快用光了,
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- PHP實(shí)例:用PHP實(shí)現(xiàn)表單驗(yàn)證碼登陸校驗(yàn)
- 解析PHP中正則的使用
- PHP+Ajax 實(shí)現(xiàn)分頁(yè)技術(shù)
- 網(wǎng)站建設(shè)中PHP的編程8種常見(jiàn)文件操作
- PHP技巧:PHP腳本編程中的文件系統(tǒng)函數(shù)庫(kù)
- PHP文章采集URL補(bǔ)全函數(shù)
- PHP分頁(yè)函數(shù)(PHP代碼+JS+CSS完整實(shí)例)
- 通用PHP動(dòng)態(tài)生成靜態(tài)HTML網(wǎng)頁(yè)的代碼
- 十天學(xué)會(huì)php之第一天
- 淺談保護(hù)代碼安全,PHP如何進(jìn)行注入
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-PHP.MVC的模板標(biāo)簽系統(tǒng)(4)
。