您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關smarty的使用教程及注意事項,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
MVC是一種開發模式,強調數據的輸入、處理、顯示是強制分離的
Smarty使用教程
1.如何配置我們的smarty
解壓后把libs文件夾放在網站第一級目錄下,然后創建兩個文件夾
templates 存放模板文件
templates_c 存放編譯后的文件
再創建初始化文件smarty.ini.php
注意事項:
1.替換變量的標識分隔符一般使用<{}>
改動分隔符的兩個方法:
1.改源碼:Smarty.class.php $left_delimiter 不推薦
2.動態修改:
$Smarty->left_delimiter="<{";
$Smarty->right_delimiter="}>";
寫在display之前
2.smarty分配數據
$smarty->assign("Address",$address);
用來賦值到模板中。可以指定一對 名稱/數值,也可以指定包含 名稱/數值 的聯合數組。
$smarty->assign("aa",true); //輸出1
$smarty->assign("aa",false); //輸出空
注意:
二維關聯數組的分配 <{$arr.num.email}>
對象的分配 <{$dog1->name}>
對象的對象的屬性 公開的 <{$dog1->master->name}>
從配置文件中取出數據 常見配置樣式等
先加載配置文件<{config_load file="../configs/foo.conf"}>
配置文件中的數據可直接在模板文件中使用<{#Bgcolor#}>
3.smarty模板的內建函數foreach
一維數組循環取出
<{foreach form=$arr item=temp key=k}>
<{$k}>=<{$temp}>
<{/foreach}>
二維索引數組循環取出
<{foreach form=$arr item=temp key=k}>
<{foreach form=$temp item=val}>
<{$val}>
<{/foreach}>
<{/foreach}>
二維關聯數組循環取出
<{foreach form=$arr item=item1}>
<{foreach form=$item1 item=item2 key=k}>
<{$k}>=<{$item2}>
<{/foreach}>
<{/foreach}>
4.自定義函數
function test($args){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$args['con']."";
}
return $str;
}
//需注冊函數
$smarty->register_function("self","test");
調用形式
<{self times="4" size="5" con="hello" color="red"}>
自定義函數(塊注冊方式)
function test2($args,$con){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$con."";
}
return $str;
}
//注冊塊函數
$smarty->register_block("block","test2");
調用形式
<{block times="4" size="5" color="red"}>hello<{/block}>
以插件的形式增加自定義函數(放在libs/plugins文件夾中)
必須遵守文件名格式:function.自定義函數名.php
函數名格式:
function smarty_function_自定義函數名($params,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$args['con']."";
}
return $str;
}
//無需注冊
以插件的形式增加自定義塊函數
必須遵守文件名格式:function.自定義函數塊名.php
函數名格式:
function smarty_block_自定義函數塊名($params,$con,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="
" size='".$args['size']."'>".$con."";
}
return $str;
}
//無需注冊
5.smarty基本語法
在模板中使用注釋<{*注釋內容*}>
在模板文件中調用函數
<{函數名 屬性1="屬性值" 屬性2="屬性值"……}>
在模板文件對引用的變量可以進行數學運算,但不能用()來改變運算次序
分配常量并取出
define("RATE","0.08");
<{$samrty.conts.RATE}>
在模板中使用變量調節器
基本用法
<{變量/函數/字符串|變量調節器名稱:參數1:參數2}>
變量調節器可以自定義,以插件的形式給出
文件名:modifier.變量名稱.php
function smarty_modifier_XXX(){
//代碼
}
//新建一個變量調節器 要求句子首字母大寫其他小寫
文件名:modifier.變量名稱.php
function smarty_modifier_mycapitalize(){
return strtoupper(substr($string,0,1)).strtolower(substr($string,1));
}
常用的變量操作符
date_formate 時間格式
escape 轉碼
nl2br 換行符替換為
regex_replace 正則替換
string_formate 字符串格式化
truncate 截取
6.samrty其他內建函數
capture 捕獲
config_load 從配置文件中加載變量
include 在當前模板中包含其他模板
insert 類似于include,但所包含的內容不會被緩存
if elseif else
ldelim rdelim 左右邊界符
count 計數
literal 標簽內數據當文本處理
php
section sectionelse
7.自定義函數
counter 保存了每次記數時的當前記數值. 用戶可以通過調節 interval 和 direction 調節該值. 也可以決定是否輸出該值. 如果需要同時運行多個計數器,必須為它們指定不同的名稱. 如果沒有指定名稱,模板引擎使用 "default" 作為缺省值.
cycle
用于輪轉使用一組值. 該特性使得在表格中交替輸出顏色或輪轉使用數組中的值變得很容易.
html_checkboxes
根據給定的數據創建復選按鈕組. 該函數可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代. 所有的輸出與 XHTML 兼容.
html_options
根據給定的數據創建選項組. 該函數可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代.
html_radios
根據給定的數據創建單選按鈕組. 該函數可以指定哪個元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代. 所有的輸出與 XHTML 兼容.
html_select_date
用于創建日期下拉菜單,可以顯示任意年月日.
html_select_time
用于創建時間下拉菜單
mailto
用于創建日期下拉菜單
popup-init,popup
popup 用于創建javascript彈出窗口. 需要映入overLib.js
textformat
用于格式化文本
8.變量(重點使用)
$config_dir
$template_dir
$compile_dir
$plugins_dir
$caching
$cache_dir
$cache_lifetime
$debugging啟動調試控制臺
9.smarty的緩存機制
默認是當模板文件有改動時,控制器會判斷
1.模板編譯文件是否存在
2.模板文件改動時間是否大于編譯文件改動時間
結果為true時才會重新生成編譯文件,從而對頁面重新渲染
缺點:
1.生成的編譯文件是PHP動態數據文件,影響瀏覽器讀取性能
2.當控制器文件發生變化時,編譯文件不會重新生成
修改后:
1.生成的編譯文件是HTML靜態數據文件,利于瀏覽器讀取
2.當控制器文件發生變化時,通過設置的cache_lifetime來控制重新生成編譯文件
局部緩存技術
一個模板文件一部分緩存,一部分實時更新
insert函數默認是不緩存
//根據ID號來生成不同的緩存頁面
$smarty->display('模板文件',緩存ID)
$smarty->clear_all_cache(int expire time);//清除所有緩存
作為可選參數“expire time”,你可以指定一個以秒為單位的最小時間,超過這個時間的緩存都將被清除掉
$smarty->clear_cache('模板文件',緩存ID);//清除指定id的緩存文件
append 以值傳遞,有拷貝的過程
append_by_ref 引用添加
assign默認是值傳遞的
assign_by_ref是引用傳遞
10.smarty過濾器
Prefilters預過濾器
在控制器讀取模板文件之前運行,函數封裝在display函數中
所用是刪除不需要的內容,監視對模板進行的操作
Postfilters后過濾器 可以用開添加注釋版本號
在控制器輸出編譯文件之前運行
Outputfilters輸出濾鏡
編譯文件被瀏覽器讀取之前執行
看完上述內容,你們對smarty的使用教程及注意事項有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。