溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

smarty的使用教程及注意事項

發(fā)布時間:2020-10-14 17:48:45 來源:億速云 閱讀:153 作者:Leah 欄目:建站服務(wù)器

今天就跟大家聊聊有關(guān)smarty的使用教程及注意事項,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

MVC是一種開發(fā)模式,強調(diào)數(shù)據(jù)的輸入、處理、顯示是強制分離的

Smarty使用教程
1.如何配置我們的smarty
解壓后把libs文件夾放在網(wǎng)站第一級目錄下,然后創(chuàng)建兩個文件夾
templates 存放模板文件
templates_c 存放編譯后的文件
再創(chuàng)建初始化文件smarty.ini.php

注意事項:
1.替換變量的標識分隔符一般使用<{}>
改動分隔符的兩個方法:
1.改源碼:Smarty.class.php $left_delimiter 不推薦
2.動態(tài)修改:
$Smarty->left_delimiter="<{";
$Smarty->right_delimiter="}>";
寫在display之前

2.smarty分配數(shù)據(jù)
$smarty->assign("Address",$address);
用來賦值到模板中??梢灾付ㄒ粚?名稱/數(shù)值,也可以指定包含 名稱/數(shù)值 的聯(lián)合數(shù)組。
$smarty->assign("aa",true); //輸出1
$smarty->assign("aa",false); //輸出空
注意:
二維關(guān)聯(lián)數(shù)組的分配 <{$arr.num.email}>
對象的分配 <{$dog1->name}>
對象的對象的屬性 公開的 <{$dog1->master->name}>
從配置文件中取出數(shù)據(jù) 常見配置樣式等
先加載配置文件<{config_load file="../configs/foo.conf"}>
配置文件中的數(shù)據(jù)可直接在模板文件中使用<{#Bgcolor#}>

3.smarty模板的內(nèi)建函數(shù)foreach
一維數(shù)組循環(huán)取出
<{foreach form=$arr item=temp key=k}>
<{$k}>=<{$temp}>
<{/foreach}>
二維索引數(shù)組循環(huán)取出
<{foreach form=$arr item=temp key=k}>
<{foreach form=$temp item=val}>
<{$val}>
<{/foreach}>
<{/foreach}>
二維關(guān)聯(lián)數(shù)組循環(huán)取出
<{foreach form=$arr item=item1}>
<{foreach form=$item1 item=item2 key=k}>
<{$k}>=<{$item2}>
<{/foreach}>
<{/foreach}>

4.自定義函數(shù)
function test($args){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$args['con']."";
}
return $str;
}
//需注冊函數(shù)
$smarty->register_function("self","test");
調(diào)用形式
<{self times="4" size="5" con="hello" color="red"}>

自定義函數(shù)(塊注冊方式)
function test2($args,$con){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$con."";
}
return $str;
}
//注冊塊函數(shù)
$smarty->register_block("block","test2");
調(diào)用形式
<{block times="4" size="5" color="red"}>hello<{/block}>

以插件的形式增加自定義函數(shù)(放在libs/plugins文件夾中)
必須遵守文件名格式:function.自定義函數(shù)名.php
函數(shù)名格式:
function smarty_function_自定義函數(shù)名($params,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$args['con']."";
}
return $str;
}
//無需注冊

以插件的形式增加自定義塊函數(shù)
必須遵守文件名格式:function.自定義函數(shù)塊名.php
函數(shù)名格式:
function smarty_block_自定義函數(shù)塊名($params,$con,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$con."";
}
return $str;
}
//無需注冊

5.smarty基本語法
在模板中使用注釋<{*注釋內(nèi)容*}>
在模板文件中調(diào)用函數(shù)
<{函數(shù)名 屬性1="屬性值" 屬性2="屬性值"……}>
在模板文件對引用的變量可以進行數(shù)學運算,但不能用()來改變運算次序
分配常量并取出
define("RATE","0.08");
<{$samrty.conts.RATE}>
在模板中使用變量調(diào)節(jié)器
基本用法
<{變量/函數(shù)/字符串|變量調(diào)節(jié)器名稱:參數(shù)1:參數(shù)2}>
變量調(diào)節(jié)器可以自定義,以插件的形式給出
文件名:modifier.變量名稱.php
function smarty_modifier_XXX(){
//代碼
}
//新建一個變量調(diào)節(jié)器 要求句子首字母大寫其他小寫
文件名:modifier.變量名稱.php
function smarty_modifier_mycapitalize(){
return strtoupper(substr($string,0,1)).strtolower(substr($string,1));
}
常用的變量操作符
date_formate 時間格式
escape 轉(zhuǎn)碼
nl2br 換行符替換為

regex_replace 正則替換
string_formate 字符串格式化
truncate 截取

6.samrty其他內(nèi)建函數(shù)
capture 捕獲
config_load 從配置文件中加載變量
include 在當前模板中包含其他模板
insert 類似于include,但所包含的內(nèi)容不會被緩存
if elseif else
ldelim rdelim 左右邊界符
count 計數(shù)
literal 標簽內(nèi)數(shù)據(jù)當文本處理
php
section sectionelse

7.自定義函數(shù)
counter 保存了每次記數(shù)時的當前記數(shù)值. 用戶可以通過調(diào)節(jié) interval 和 direction 調(diào)節(jié)該值. 也可以決定是否輸出該值. 如果需要同時運行多個計數(shù)器,必須為它們指定不同的名稱. 如果沒有指定名稱,模板引擎使用 "default" 作為缺省值.
cycle
用于輪轉(zhuǎn)使用一組值. 該特性使得在表格中交替輸出顏色或輪轉(zhuǎn)使用數(shù)組中的值變得很容易.
html_checkboxes
根據(jù)給定的數(shù)據(jù)創(chuàng)建復選按鈕組. 該函數(shù)可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代. 所有的輸出與 XHTML 兼容.
html_options
根據(jù)給定的數(shù)據(jù)創(chuàng)建選項組. 該函數(shù)可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代.
html_radios
根據(jù)給定的數(shù)據(jù)創(chuàng)建單選按鈕組. 該函數(shù)可以指定哪個元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代. 所有的輸出與 XHTML 兼容.
html_select_date
用于創(chuàng)建日期下拉菜單,可以顯示任意年月日.
html_select_time
用于創(chuàng)建時間下拉菜單
mailto
用于創(chuàng)建日期下拉菜單
popup-init,popup
popup 用于創(chuàng)建javascript彈出窗口. 需要映入overLib.js
textformat
用于格式化文本

8.變量(重點使用)
$config_dir
$template_dir
$compile_dir
$plugins_dir
$caching
$cache_dir
$cache_lifetime
$debugging啟動調(diào)試控制臺

9.smarty的緩存機制
默認是當模板文件有改動時,控制器會判斷
1.模板編譯文件是否存在
2.模板文件改動時間是否大于編譯文件改動時間
結(jié)果為true時才會重新生成編譯文件,從而對頁面重新渲染
缺點:
1.生成的編譯文件是PHP動態(tài)數(shù)據(jù)文件,影響瀏覽器讀取性能
2.當控制器文件發(fā)生變化時,編譯文件不會重新生成
修改后:
1.生成的編譯文件是HTML靜態(tài)數(shù)據(jù)文件,利于瀏覽器讀取
2.當控制器文件發(fā)生變化時,通過設(shè)置的cache_lifetime來控制重新生成編譯文件

局部緩存技術(shù)
一個模板文件一部分緩存,一部分實時更新
insert函數(shù)默認是不緩存

//根據(jù)ID號來生成不同的緩存頁面
$smarty->display('模板文件',緩存ID)
$smarty->clear_all_cache(int expire time);//清除所有緩存
作為可選參數(shù)“expire time”,你可以指定一個以秒為單位的最小時間,超過這個時間的緩存都將被清除掉
$smarty->clear_cache('模板文件',緩存ID);//清除指定id的緩存文件

append 以值傳遞,有拷貝的過程
append_by_ref 引用添加
assign默認是值傳遞的
assign_by_ref是引用傳遞

10.smarty過濾器
Prefilters預過濾器
在控制器讀取模板文件之前運行,函數(shù)封裝在display函數(shù)中
所用是刪除不需要的內(nèi)容,監(jiān)視對模板進行的操作
Postfilters后過濾器 可以用開添加注釋版本號
在控制器輸出編譯文件之前運行
Outputfilters輸出濾鏡
編譯文件被瀏覽器讀取之前執(zhí)行                       

看完上述內(nèi)容,你們對smarty的使用教程及注意事項有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI