php學習筆記(三十八)smarty中的內建函數的使用____函數

來源:互聯網
上載者:User

init.smarty.php

<?phpdefine("ROOT", ".");//解決問題:Warning: strftime() [function.strftime]:date_default_timezone_set("Asia/Shanghai");include ROOT."/libs/Smarty.class.php";$tpl = new Smarty();//smarty初始化$tpl->template_dir=ROOT."/templates/";$tpl->compile_dir=ROOT."/templates_c/";//設定檔位置$tpl->config_dir=ROOT."/configs/";$tpl->left_delimiter="<!--{";$tpl->right_delimiter="}-->";?>

mysmarty.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><!--{config_load file="view.conf" section="one"}--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title><!--{$title}--></title></head><body><!--{include file="header.html"}--><!--{capture name="cat"}-->capture<br><!--{/capture}--><!--{$smarty.capture.cat}--><!--{if $num == 1}-->#####1<!--{elseif $num eq 2}-->#####2<!--{else $num == 3}-->#####3<!--{/if}--><br><!--{foreach from="$row1" item="val" name="one"}--><!--{$val}--><br><!--{foreachelse}-->數組為空白,或沒有分配<!--{/foreach}--><!--{$smarty.foreach.one.total}--><br><!--{foreach from="$row2" item="val2" key="k" name="two"}--><!--{$k}-->==<!--{$val2}--><br><!--{foreachelse}-->數組為空白,或沒有分配<!--{/foreach}--><tableborder="1"><!--{foreach from="$data" item="row" name="outer"}--><!--{if $smarty.foreach.outer.iteration is even}--><tr bgcolor="#cccccc"><!--{elseif $smarty.foreach.outer.first}--><tr bgcolor="red"><!--{elseif $smarty.foreach.outer.last}--><tr bgcolor="blue"><!--{else}--><tr><!--{/if}--><!--{foreach from="$row" item="col" name="inner"}--><td><!--{$col}--><br></td><!--{foreachelse}--><td>數組為空白,或沒有分配</td><!--{/foreach}--></tr><!--{foreachelse}--><tr><td>數組為空白,或沒有分配</td></tr><!--{/foreach}--></table>共計<!--{$smarty.foreach.one.total}-->行<br><!--{section loop=$sec name="ls"}--><!--{$sec[ls]}--><!--{sectionelse}-->數組為空白,或沒有分配<!--{/section}--><tableborder="1" width="800"><!--{section loop=$secT name="ls" max="3" start="8" step="6"}--><tr><td><!--{$smarty.section.ls.rownum}--></td><td><!--{$smarty.section.ls.index}--></td><td><!--{$secT[ls].id}--></td><td><!--{$secT[ls].name}--></td><td><!--{$secT[ls].price}--></td><td><!--{section loop=$secT[ls].sub name="lsin"}--><!--{$secT[ls].sub[lsin].one}--><!--{$secT[ls].sub[lsin].two}--><!--{/section}--></td></tr><!--{sectionelse}--><tr><td>數組為空白,或沒有分配</td></tr><!--{/section}--></table><br></body></html>

header.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title><!--{$title}--></title></head><body>這是個檔案頭</body></html>

mysmarty.php

<?php/** *  * 以下所有使用變數都要基於設定的首碼和尾碼<!--{}--> * 內建函數使用 * 一:內建函數 * 在模板中的調用方式都是和使用Html標記類似 * smarty內部的函數,只能按照系統提供的方式使用,不可以修改,也不能添加和刪除 * 使用範圍: * 流程式控制制 if  * 數組的遍曆 * 檔案操作(包含、設定檔匯入) *  * 二:自訂函數 * 1.可以通過註解和smarty外掛程式方式,加入自己的函數到smarty中,相當於擴充 * 2.系統提供的自訂函數可以修改 *  * 三:常用的內建函數 * config_load:<!--{config_load file="view.conf" section="one"}--> * include:<!--{include file="header.html"}-->(子模板要注意變數的接收) *  * if,elseif,else * <!--{if $num == 1}--> * #####1 * <!--{elseif $num eq 2}--> *#####2 * <!--{else $num == 3}--> * #####3 * <!--{/if}--> *判斷條件:(太多) *eq(相等)、ne(不相等)、neq(不相等)、gt(大於)、lt(小於)、lte(小於等於)、 *le(小於等於)、gte(大於等於)、ge(大於等於)、is even(是否是偶數)、is odd(是否是奇數) *is not even(是否是偶數)、is not odd(是否是奇數)、not(非/反)、mod(求模)、 *div by($a/$b整除)、even by($a/$b%2==0,相除再判斷是否是偶數)、odd by(相除再判斷是否是奇數)、 *===(相等包括類型)、==、!=、>、<、<=、>= * * foreach,foreeachesle * foreach和php的foreach用法相同,多了一個foreeachesle(數組為空白執行) * name和key可以不添加;name是起名字;key是取下標值 * <!--{foreach from="$row2" item="val2" key="k" name="two"}--> * <!--{$k}-->==<!--{$val2}--><br> * <!--{foreachelse}--> * 數組為空白,或沒有分配 * <!--{/foreach}--> *  * 保留變數擷取迴圈的資訊 * 迴圈次數:<!--{$smarty.foreach.one.total}--> * 迴圈標號:<!--{$smarty.foreach.one.iteration}--> * 迴圈第一次:<!--{$smarty.foreach.one.first}--> * 迴圈最後一次:<!--{$smarty.foreach.one.last}--> *  * section(建議使用section;但是不支援關聯陣列,需要將關聯陣列先轉換) * **所遍曆的只能是下標連續的索引數組 * 一:效率高於foreach(底層實現是for迴圈,for迴圈比foreach效率高) * 二:要比foreach功能多 *  * capture:(隱藏,將變數儲存下來,用$smarty.capture來使用) * <!--{capture name="cat"}--> * capture<br> * <!--{/capture}--> * 使用:<!--{$smarty.capture.cat}--> * php(潛入php代碼,不建議使用) * <!--{php}--> * <!--{/php}--> *  *///如果檔案載入失敗require會停止繼續解析php;而include則會繼續向下執行require 'init.smarty.php';$title="這是一個文字標題";$mysqli = new mysqli("localhost","root","root","hibernate");$result = $mysqli->query("select id,name,price from users");$row1 = $result->fetch_row();$row2 = $result->fetch_assoc();$data=array();$sect=array();while ($row=$result->fetch_assoc()){$data[]=$row;$row["sub"]=array(array("one"=>"aa","two"=>"bb"));$sect[]=$row;}$tpl->assign("title",$title);$tpl->assign("var",true);$tpl->assign("num",2);$tpl->assign("row1",$row1);$tpl->assign("row2",$row2);$tpl->assign("data",$data);//下標是連續的索引數組$row1[]="ww";$tpl->assign("sec",$row1);$tpl->assign("secT",$sect);//模板檔案名稱可以隨便定義:比如:mysmarty.tpl只有內容是html就可以了$tpl->display("mysmarty.html");?>



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.