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

首頁 > 學院 > 開發設計 > 正文

smarty

2019-11-15 01:36:25
字體:
來源:轉載
供稿:網友
smarty

模板引擎是用于把模板文件和數據內容合并在一起的程序,便于網站開發有利于代碼分離和維護,了解一個模板最好知道其工作原理,以便于實現一通萬通。

模板文件一般是HTML xml js等類型文件,如果不用模板引擎若要把數據顯示在網頁上,我們需要在php中輸出HTML,而使用模板則只要把數據交給模板引擎程序即可,然后告訴它用哪個模板文件,自然就會把數據和頁面結合以后返回或輸出,模板至少有以下功能1.把數據提供給模板引擎的功能。2.指定模板的功能。3.輸出結果的功能。一般來說為了方便程序員們使用模板引擎,開發者都會把它的功能在一定程度上封裝起來,封裝成一個類,實例化之后得到一個對象,即模板引擎對象,一個對象有其屬性和方法,smarty對象的屬性和方法在smarty手冊上查找,首先說說其方法,assign 把數據提交給模板的方法。沒有單獨的指定模板文件的方法已經合并到輸出的方法中,輸出的方法有兩個 display 直接輸出 fetch 返回合并好的HTML代碼,對于輸出我們主要用到的是assign 因為我們顯示的數據往往是多樣性的,可能是一個量,可能是一個數組量也可能是多維數組,在不同的情況下應該如何正確提交給smarty是一個問題,提交后如何對應顯示也是個問題,smarty引擎使用的解釋方法是先把HTML文件轉化為php文件,然后在賦值各個量,并且執行這個php文件,對應不同的數據格式,它有一套固定的書寫方式,需要我們用這種書寫方式在模板文件上做對應的標記,smarty默認使用的模板標記符是一對{},比如{$a}這個標記等效于echo $a;在php中我們需要有對應的賦值過程,$smarty->assign("a","值");如果我們有多個量進行賦值,一個個這樣寫就很麻煩,smarty為我們考慮了這一點,例如我們從數據庫里讀出一個文章,要顯示在頁面的內容有標題內容作者時間,數據結構大體是這樣的

array([id]=>1,['title']=>"標題",…);

我們的模板需要有幾個對應的標記,例如

<h1>{$title}</h1>

<div>{$content}</div>

一個個賦值太麻煩,assign方法支持數組直接賦值,$rows = 從數據庫讀出的據,

$smarty->assign($rows);smarty就會取數據索引自動一一賦值,但是這個時候為了避免引起變量沖突,我們希望還是直接以數組形式賦值呢,例如

$rows = 從數據庫讀出的據,

$smarty->assign("rows",$rows);

如果此時我們在模板的標記是{$rows} 那輸出的時候我們只能看到array 正如php里面直接echo數組一樣,在php輸出具體量是echo $rows['title'];smarty規定的符號是一個點號,{$rows.title},用這種方式類似于

echo $rows['title']

每種模板有其對應的書寫規則,接下來如果要顯示的是一個文章列表呢,假設MySQL給我們返回了10條數據,10條數據都要顯示出來,而且他們的索引肯定完全相同,根據編程思路知道結果求過程,假設顯示如下

<ul><li>1111</li><li>222</li><li>333</li><li>4444</li></ul>

如果這是我們希望輸出的樣子

首先這是多個量當然用的是數組了,

$list=array();While($rows=數據){$list[]=$rows;}$smarty->assign("list",$list);

先把數據放到一個數組中再一次性交給smarty,這樣一來list變量里面是一個二維數組,如果是我們得到一個這樣的二維數組,要把里面所有值顯示出來,最好的方法是循環輸出,同樣smarty為我們提供了循環用的標記,section和 foreach

section標記格式

{section name=這次循環的名字 loop=數據量名}

{/section}

{section name=i loop=$list}

<li>{$list[i].title}</li>

{/section}

上面的代碼看起來很像for循環,但這里的i不是for循環里面的$i 只是這個循環的名字,$list[循環名]這個寫法可以每次從數組里得到一個量,正如剛才說的,$list是一個二維數組,$list[i]得到的還是數組。

還有一個寫法就是foreach 其語法如下:

{foreach key=索引 item=值 from=賦值變量}

{$key}:{$item}<br />

{/foreach}

{foreach item=v from=$list}

<li>{$v.title}</li>

{/foreach}

循環list變量每個量賦值到v里,然后從變量v里面指定要顯示的索引,除了循環標記外,它還給我們提供了一些常用的語法標記,例如包含文件,條件判斷,我們知道HTML不能包含文件,比如網頁頭部,但smarty提供了{include}的標記,可以像php一樣包含文件,例如{include file="文件路徑"} 這個標記格式是固定的,而且這個路徑必須在模板引擎指定的路徑下,而條件判斷的語法和php一樣是if條件判斷,語法如下

{if變量==值或量}

為真時顯示的值

{else}

為假是顯示的值

{/if}

也可以不寫else只有為真時顯示的內容,例如常見的一種情況是網頁上有一個登陸口登錄前顯示的是表單登錄后顯示的是用戶信息,假設一個量已經賦值給模板了比如 $username 用戶登錄這個量就有用戶名沒有登錄這個量就是空的,我們可以這樣寫

{if $username !=""}

歡迎{$username}

{else}

請先登錄

{/if}

我們只要在php把這個變量準備好,并賦值給smarty即可除了這些標記外還有的標記自行參考手冊,

其次就是變量調節器了,很多時候我們從數據庫中得到的數據,都要小小的處理下才輸出的,比如日期格式,只顯示年月日即可再如輸出的內容里的換行要換成<br />才能在頁面顯示對應的樣子,這個時候我們可以使用smarty自帶的變量調節器,格式如下

{要輸出的變量|調節器名:參數}

假如內容部分在顯示的時候把所有的換行顯示為<br />只需要如下寫法

{$content|nl2br}

日期的格式化可以用date_format 例如手冊上

index.php:$smarty = new Smarty;$smarty->assign('yesterday', strtotime('-1 day'));$smarty->display('index.tpl');index.tpl:{$smarty.now|date_format}{$smarty.now|date_format:"%A, %B %e, %Y"}{$smarty.now|date_format:"%H:%M:%S"}{$yesterday|date_format}{$yesterday|date_format:"%A, %B %e, %Y"}{$yesterday|date_format:"%H:%M:%S"}OUTPUT:Feb 6, 2001Tuesday, February 6, 200114:33:00Feb 5, 2001Monday, February 5, 200114:33:00

實在不行我們可以用php處理好之后再進行賦值。

下面寫上配置

<?phpdefine("ROOT",str_replace('//','/',dirname(__FILE__)).'/');//定義根路徑//加載smarty類require ROOT.'lib/smarty.class.php';$samrty = new smarty();//實例化一個smarty類//配置各種目錄$smarty ->setTemplateDir(ROOT.'templates/')        ->setCompileDir(ROOT.'templates_c')        ->setPluginsDir(ROOT.'plugins/')        ->setCacheDir(ROOT.'cache/')        ->setConfigDir(ROOT.'configs/');$smarty->caching = false;//是否開啟緩存$smarty->left_delimiter = '<{';//設置左右 防止和js CSS 等發生沖突$smarty->right_delimiter = '}>';?>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠躁夜夜躁人人爽天天天天97| 国产成人综合一区二区三区| 日韩av在线影视| 97成人超碰免| 中文字幕国内精品| 97久久久免费福利网址| 中文字幕欧美日韩精品| 日韩精品中文字幕在线播放| 欧美日韩免费在线观看| 久久99精品久久久久久琪琪| 久久精品在线播放| 亚洲欧美日本伦理| 国产精品网站大全| 亚洲激情 国产| 国产精品久久久久91| 欧美性生活大片免费观看网址| 欧美电影在线免费观看网站| 亚洲石原莉奈一区二区在线观看| 情事1991在线| 欧美日韩国产中文精品字幕自在自线| www日韩中文字幕在线看| 国产综合色香蕉精品| 欧美日韩国产一区二区| 91在线免费看网站| 91综合免费在线| 欧美日韩亚洲视频| 亚洲丝袜av一区| 亚洲精品国产精品国自产观看浪潮| 日韩中文字幕免费视频| 欧美国产日韩一区二区在线观看| 国产男女猛烈无遮挡91| 一区二区三区国产在线观看| 性欧美xxxx视频在线观看| 日韩精品中文在线观看| 亚洲国产天堂久久综合| 日韩在线中文字| 久久国产精品免费视频| 亚洲国产日韩一区| 日韩www在线| 中文字幕av一区中文字幕天堂| 久久不射热爱视频精品| 高潮白浆女日韩av免费看| 欧美人与物videos| 欧美日韩精品国产| 97免费视频在线播放| 精品视频9999| 91av中文字幕| 久久精品中文字幕| 国产精品2018| 亚洲国产高清高潮精品美女| 亚洲人成在线播放| 97视频在线观看视频免费视频| 久久免费少妇高潮久久精品99| 国产在线视频不卡| 欧美大片在线影院| 国产精品久久久久999| 亚洲精品二三区| 国产剧情久久久久久| 精品一区精品二区| 欧美日本啪啪无遮挡网站| 精品久久久久久中文字幕一区奶水| 日韩中文娱乐网| 亚洲视频欧洲视频| 色婷婷综合成人av| 亚洲男人天堂2023| 色播久久人人爽人人爽人人片视av| 亚洲国产精品美女| 亚洲午夜未删减在线观看| 精品国产区一区二区三区在线观看| 亚洲一区二区三区在线免费观看| 9.1国产丝袜在线观看| 欧美激情极品视频| 国产精品极品美女粉嫩高清在线| 日韩欧美亚洲综合| 久久精品国产久精国产思思| 日韩中文字幕网站| 精品国产区一区二区三区在线观看| 最近2019中文免费高清视频观看www99| 一区二区欧美亚洲| 最好看的2019的中文字幕视频| 日韩国产欧美区| 日韩av网址在线观看| 日韩在线播放av| 亚洲免费av网址| 国产欧美久久一区二区| 国产精品69av| 欧美亚洲国产成人精品| 激情成人在线视频| 狠狠躁夜夜躁人人爽天天天天97| 精品亚洲国产成av人片传媒| 欧美一级电影免费在线观看| 亚洲欧美中文日韩在线| 亚洲精品视频中文字幕| 日韩欧美第一页| 欧美大全免费观看电视剧大泉洋| 欧美午夜精品久久久久久浪潮| 亚洲国产一区自拍| 国产日韩精品在线观看| 2019国产精品自在线拍国产不卡| 精品久久久香蕉免费精品视频| 午夜精品国产精品大乳美女| 国产婷婷色综合av蜜臀av| 欧美xxxx综合视频| 亚洲色图35p| 久久伊人91精品综合网站| 亚洲日本中文字幕| 日韩av色综合| 日韩av色在线| 国产不卡精品视男人的天堂| 上原亚衣av一区二区三区| 欧美亚洲国产成人精品| 国产精品久久网| 国产在线观看精品一区二区三区| 欧美精品在线免费观看| 精品毛片三在线观看| 久久久最新网址| 欧美情侣性视频| 亚洲欧美日韩综合| 在线观看日韩欧美| 色噜噜国产精品视频一区二区| 国产日韩欧美电影在线观看| 大荫蒂欧美视频另类xxxx| 在线看日韩av| 欧洲亚洲在线视频| 久久理论片午夜琪琪电影网| 97视频在线观看免费高清完整版在线观看| 国产精品白嫩美女在线观看| 久久69精品久久久久久国产越南| 久久精品99久久久久久久久| 国产做受69高潮| 中文字幕欧美日韩精品| 97色在线视频观看| 国产成人精品免费视频| 91色琪琪电影亚洲精品久久| 亚洲午夜国产成人av电影男同| 亚洲级视频在线观看免费1级| 一区二区三区美女xx视频| 国产成人精品免费久久久久| 久久69精品久久久久久国产越南| 亚洲第一免费网站| 午夜精品福利视频| 日韩av综合网| 亚洲欧美激情一区| 欧美性猛交xxxx乱大交蜜桃| 亚洲一区二区三区四区在线播放| 日韩中文字幕国产| 国产高清在线不卡| 久久久精品在线观看| 亚洲欧美资源在线| 亚洲精品久久久久久久久久久久久| 综合国产在线观看| 久久精品久久久久| 亚洲成人激情在线观看| 精品国产福利在线| 91精品在线观| 欧美高清在线观看| 亚洲国产天堂网精品网站| 久久久久久久久久久网站| 9.1国产丝袜在线观看| 亚洲精品一区中文| 亚洲国产一区二区三区四区| 草民午夜欧美限制a级福利片| 色综合视频一区中文字幕| 久久九九精品99国产精品|