最近投靠了一家新公司,前后端不分離,某端的頁(yè)面寫(xiě)法有用到smarty,簡(jiǎn)單了解下smarty語(yǔ)法
1.smarty的配置
首先,使用smarty第一件事是先配置好,一般有以下9行代碼
require_once("smarty/libs/Smarty_class.php"); //把smarty的類定義文件包含進(jìn)來(lái)
$smarty=new smarty();
$smarty->config_dir="smarty/libs/Config_File.class.php";
$smarty->caching=false; //是否使用緩存,項(xiàng)目在調(diào)試期間,不建議啟用緩存
$smarty->cache_dir="smarty_cache/"; //緩存文件夾
$smarty->template_dir="smarty_tpl"; //模板文件夾
$smarty->compile_dir="smarty_compile"; //編譯文件夾
$smarty->left_delimiter="<{"; // 標(biāo)簽符定義不是必要的,smarty默認(rèn)是使用"<"和">",強(qiáng)烈建議更換。
//因?yàn)槿绻鹲marty的標(biāo)簽剛好在javascript語(yǔ)句里面時(shí),沖突的可能性很大
$smarty->right_delimiter="}>";
以上的9行代碼可以放在一個(gè)獨(dú)立的文件,需要使用smarty的頁(yè)面引用進(jìn)來(lái)即可
- smarty的使用
smarty替換標(biāo)簽的語(yǔ)法:
smarty->assign("標(biāo)簽名","值");
smarty->display("index.html"); //顯示內(nèi)容,index為模板文件名
假定模板文件里面有一個(gè)標(biāo)簽 <{ $user_name }> (注意:標(biāo)簽里面的變量必須帶$)
那么在PHP文件可以:
$new_name="Joan";
smarty->assign("user_name",$new_name); (注意:在此時(shí),user_name是不帶$的)
smarty->display("index.html"); //顯示內(nèi)容,index為模板文件名
- smarty的循環(huán)
循環(huán)的使用在php文件像處理普通標(biāo)簽一樣處理
模板文件代碼:
<{section name=s loop=$stu}>
<{/section}>
<{$stu[s]}>
那么在PHP文件可以:
假如有一個(gè)數(shù)組,或一個(gè)記錄集 $rs
$smarty->assign("stu",$rs);
$smarty->display("index.html"); //在PHP文件處理循環(huán)標(biāo)簽和普通標(biāo)簽沒(méi)什么區(qū)別。
- smarty的if 語(yǔ)法
模板文件
<{if $my_r>500 }>
<{$my_r}>
<{/if}>
php文件:
$aa=123;
$smarty->assign("my_r",$aa);
$smarty->display("in.html");
上例中,如果$aa>500,my_r的標(biāo)簽就能顯示出來(lái),否則不顯示。
<{ if 條件 }> //此處的條件不要加括號(hào),也不要像basic語(yǔ)言那樣在后面加 then
<{/if}>
- smarty循環(huán)配合if 使用實(shí)例
PHP文件
----------------------------------
$aa[0]=123;
$aa[1]=456;
$aa[2]=789;
$smarty->assign("my_r",$aa);
$smarty->display("in.html");
模板文件
<{ section name=s loop=$my_r }>
<{if $my_r[s]>200 }>
<{$my_r[s]}>
<{else}>
小于200
<{/if}>
<{/section}>
上例中,只顯示大于200的數(shù)值