隨筆-31  評(píng)論-257  文章-0  trackbacks-0
          Smarty 的表現(xiàn)邏輯

                第一編文章中,只簡(jiǎn)單的講述了Smarty里的基本原理,也就傳幾個(gè)變量的值而已,而本節(jié)中,將會(huì)講述Smarty的邏輯表示結(jié)構(gòu),比如它的分支,修飾符,迭代等結(jié)構(gòu)的表達(dá)。

               (1) 注釋:

                中Smarty中,也可以使用注釋,設(shè)計(jì)人員可以用注釋在模板頁(yè)面中傳遞一些說明信息等。在Smarty中的注釋為:{* Hello Jiang! *},大家可以看到,Smarty中的注釋是用{**}來包圍的,可以單行,也可以多行,比如可以這樣寫:
                {* Hello
                     Jiang! *}

               (2)變量修飾符:

                在Smarty中,可以為變量添加修飾符,用于對(duì)變量進(jìn)行一些Smarty已定義好的操作,變量修飾符的寫法是:
                {$var|modifier}
          其中,$var 是變量,modifier 是修飾符的單詞,意為對(duì)指定變量進(jìn)行某種修飾操作。

                1、capitalize 修飾符
                capitalize 修飾符用于對(duì)變量?jī)?nèi)的值中所有單詞的首字母變?yōu)榇髮懀煽词纠?br />       $smarty = new Smarty;
                $smarty->assign("$title","hello jiang zone");
                $smarty->display("index.tpl");

          index.tpl 內(nèi)容為:
                {$title|capitalize}

                2、count_words
                count_words 函數(shù)統(tǒng)計(jì)變量中的單詞總數(shù)

                3、date_format
                date_format 函數(shù)是PHP strftime() 函數(shù)的包裝器,它能將可以被strftime()解析的任何日期/時(shí)間格式字符串轉(zhuǎn)換為某種特殊格式。

                4、default
                default 函數(shù)當(dāng)應(yīng)用層沒有返回值時(shí),default為指示特定變量的默認(rèn)值提供了一種簡(jiǎn)單的方式。

                5、strip_tags
                strip_tags 函數(shù)刪除變量字符串中的標(biāo)簽符號(hào)。如:
                $smarty->assign("name","<b>Jiang</b>");
                模板里這樣寫:{$name|strip_tags}
                會(huì)輸入如下name的值:"Jiang",它將<b></b>刪除了。所以,沒有輸出粗體

                6、truncate
                truncate 函數(shù)將變量字符串截取為指定數(shù)量的字符。]


                (3)控制結(jié)構(gòu)

                1、if-elseif-else
                Smarty 的if語(yǔ)句與PHP語(yǔ)言中的if語(yǔ)句相同,與PHP一樣,可以使用一些條件限定符如下:
                eq            gt            gte            ge
                lt              lte            le              ne
                neq          is even     is not even   is odd
                is not odd  div by     event by    not
                mod         odd by      ==            !=
                >              <              <=            >=
          示例:
                {if $var > 5}
                    <p>Hello JiangZone</p>
                {/if}

                2、foreach
                foreach 標(biāo)記的作用與PHP語(yǔ)句中的命令相同。但如下所示,其語(yǔ)法大不相同。它有4個(gè)參數(shù),其中兩個(gè)是必要的:
                form : 這個(gè)必要參數(shù)指定目標(biāo)數(shù)組的名。
                item : 這個(gè)必要參數(shù)指定當(dāng)前元素的名。
                key : 這個(gè)可選參數(shù)指定當(dāng)前鍵的名。
                name : 這個(gè)可選參數(shù)指定節(jié)的名。這個(gè)名是任意的,應(yīng)當(dāng)設(shè)置為一個(gè)描述性的名字。
          看看如下例子:
          require("Smarty.class.php");
          $smarty = new Smarty;
          $daysofweek = array("Mon","Tues","Weds","Thu","Fri","Sat","Sun");     
          $smarty->assign("daysofweek",$daysofweek);
          $smarty->display("daysofweek.tpl");     

          以下是daysofweek.tpl模板文件:
          {foreach from=$daysofweek item=$day}
                {$day}<br />
          {/foreach}

                3、foreachelse
                foreachelse 標(biāo)記與 foreach 一起使用,與用于字符串的 default 標(biāo)記作用類似,數(shù)組為空時(shí) foreachelse 標(biāo)記可以生成某個(gè)候選結(jié)果。以下是一個(gè)使用 foreachelse 的模板示例:
          {foreach key=key item=item from=$titles}
                {$key}: {$item}<br />
          {foreachelse}
                <p>No states matching your query were found.</p>
          {/foreach}
          注意,foreachelse 不使用結(jié)束括號(hào):它嵌入到foreach中,這與elseif嵌入到if語(yǔ)句中很類似。


                (4)語(yǔ)句
                Smarty 提供了幾個(gè)用于完成特殊任務(wù)的語(yǔ)句。
                1、include
                include語(yǔ)句與PHP包中的同名語(yǔ)句相同,只是它只用于將其它模板導(dǎo)入到當(dāng)前模板。例如,假設(shè)希望在Smarty模板中導(dǎo)入兩個(gè)文件,header.tpl 和 footer.tpl ,可以如下完成:
          {include file="header.tpl"}
          {include file="footer.tpl"}

                2、insert
                insert 標(biāo)記與 include 標(biāo)記的功能相同,只是它要導(dǎo)入不會(huì)被緩存的數(shù)據(jù)。例如,可以使用這個(gè)函數(shù)插入經(jīng)常更新的數(shù)據(jù),如股票價(jià)格,天氣預(yù)報(bào)或其它在很短時(shí)間內(nèi)就要改變的內(nèi)容。它也接受幾個(gè)參數(shù),一個(gè)是必要的,另外三個(gè)是可選的:
                name : 這個(gè)必要參數(shù)確定insert函數(shù)的名。
                assign : 這個(gè)可選參數(shù)可用于將輸出給變量,而不是直接發(fā)送到輸出。
                script : 這個(gè)可選參數(shù)可以指向在導(dǎo)入文件前直接執(zhí)行的一個(gè)PHP腳本。當(dāng)輸出文件的內(nèi)容依賴于腳本所完成的某個(gè)特定動(dòng)作時(shí),可以使用此參數(shù)。例如,可以執(zhí)行一個(gè)PHP腳本,返回某個(gè)默認(rèn)的股票價(jià)格放在不可緩存的輸出中。
                var : 這個(gè)可選參數(shù)用于傳入所有插入模板使用的其它參數(shù)。可以通過這種方式傳遞很多參數(shù)。

                3、literal
                literal 標(biāo)記告訴Smarty :標(biāo)記中嵌入的任何數(shù)據(jù)都應(yīng)當(dāng)原樣輸出,不需要轉(zhuǎn)換。這個(gè)標(biāo)記量常用于在模板中嵌入JavaScript 和CSS ,從而不需要擔(dān)心與 Smarty 的定界符沖突。

                4、php
                可以使用php函數(shù)在模板中嵌入PHP代碼。{php}{/php}標(biāo)記中的任何代碼都由PHP引擎處理。
          posted on 2008-07-29 13:49 姜大叔 閱讀(397) 評(píng)論(0)  編輯  收藏 所屬分類: PHP
          主站蜘蛛池模板: 长子县| 科技| 黎城县| 阿拉善盟| 安吉县| 许昌县| 济源市| 金秀| 威远县| 迁西县| 镇雄县| 瑞丽市| 开化县| 普陀区| 卓尼县| 衡阳县| 疏附县| 开封市| 麦盖提县| 福建省| 民丰县| 玉龙| 安溪县| 新兴县| 三穗县| 杭州市| 即墨市| 若尔盖县| 攀枝花市| 芜湖县| 慈利县| 德州市| 厦门市| 诸城市| 胶南市| 邯郸市| 合阳县| 潢川县| 牡丹江市| 南投市| 高州市|