smarty模板php
❶ smarty 模板怎樣使用php標簽
smarty本身是不推薦使用php標記的,可以通過編寫插件(block,function,modifier)來代替。
smarty默認不開啟php標記,需要在創建smarty對象後做如下設置:
$smarty->php_handling = SMARTY_PHP_ALLOW ;
❷ php中smarty 模板結構
smarty模板的控制結構 if語句控制塊常見的if語句寫法:>> if語句在smarty中的應用
# {if $name == "Fred" || $name == "Wilma"}
{* 和上面的例子一樣,"or"和"||"沒有區別 *}
# ...
{* 如果條件成立則輸出這個區塊的代碼 *}
# {/if}
{* 是條件控制的關閉標記,if必須成對出現* foreach的遍歷: 主要是應用在一維數組中. {foreach}要與{/foreach}成對使用,它有四個參數,其中form和item兩個是必要的。foreach可以使用的全部參數如表16-4所示。 表16-4 foreach可以使用的選項參數參 數 名描 述類 型默 認 值form待循環數組的名稱,該屬性決定循環的次數,必要參數數組變數無item確定當前元素的變數名稱,必要參數字元串無key當前處理元素的鍵名,可選參數字元串無name該循環的名稱,用於訪問該循環,這個名是任意的,可選參數字元串無 foreach來遍歷一維數組 foreach來遍歷二維數組 也可以在模板中嵌套使用foreach遍歷二維數組,但必須保證嵌套中的foreach名稱唯一。此外,在使用foreach遍歷數組時與下標無關,所以在模板中關聯數組和索引數組都可以使用foreach遍歷。 二維數組的遍歷 1. <?php
2. require "libs/Smarty.class.php";
//包含Smarty類庫
3. $smarty = new Smarty();
//創建Smarty類的對象
4. $contact=array(
//聲明一個保存三個聯系人信息的二維數組
5. array('name'=>'高某','fax'=>'1234','email'=
>'[email protected]','phone'=>'4321'),
6. array('name'=>'洛某','fax'=>'4567','email'=
>'[email protected]','phone'=>'7654'),
7. array('name'=>'峰某','fax'=>'8910','email'=
>'[email protected]','phone'=>'0198')
8. );
9. $smarty->assign('contact', $contact);
//將關聯數組$contact分配到模板中使用
10. $smarty->display('index.tpl');
//查找模板替換並輸出
11. ?>
在進行輸出時:
進行遍歷的方案 # {foreach from=$contact item=row}
{* 外層foreach遍歷數組$contact *}
# <tr>
{* 輸出表格的行開始標記 *}
# {foreach from=$row item=col}
{* 內層foreach遍歷數組$row *}
# <td>{$col}</td>
{* 以表格形式輸出數組中的每個數據 *}
# {/foreach}
{* 內層foreach區塊結束標記 *}
# </tr>
{* 輸出表格的行結束標記 *}
# {/foreach}
{* 外層foreach區域的結束標記 *}
說明: 這里的遍歷是對整個二維數組來進行遍歷. foreachelse在進行遍歷數組時的應用:foreach標記提供了一個擴展標記foreachelse,這個語句在from變數沒有值的時候被執行,就是在數組為空時foreachelse標記可以生成某個候選結果。在模板中foreachelse標記不能獨自使用,一定要與foreach一起使用。而且foreachelse不需要結束標記,它嵌入在foreach中,與elseif嵌入在if語句中很類似。 foreach為二維數組 1. {foreach key=key item=value from=$array}
{* 使用foreach遍歷數組$array中的鍵和值 *}
2. {$key} => {$item} <br>
{* 在模板中輸出數組$array中元素的鍵和值對 *}
3. {foreachelse}
{* foreachelse在數組$array沒有值的時候被執行*}
4. <p>數組$array中沒有任何值</p>
{* 如果看到這條語句,說明數組中沒有任何數據*}
5. {/foreach}
{* foreach需要成對出現,是foreach的結束標記 *} section的循環遍歷section來循環遍歷二維數組二維數組的遍歷 說明:這是一個二維數組的定義
$contact=array( //聲明一個保存三個聯系人信息的二維數組
array('name'=>'高某','fax'=>'1234','email'=>'[email protected]','phone'=>'4321'),
array('name'=>'洛某','fax'=>'4567','email'=>'[email protected]','phone'=>'7654'),
array('name'=>'峰某','fax'=>'8910','email'=>'[email protected]','phone'=>'0198')
);
$smarty->assign('contact', $contact); //將關聯數組$contact分配到模板中使用
說明:使用section來進行遍歷,其中對於是關聯數組的數組訪問,使用"."號形式來訪問
{section name=line loop=$contact} {* 使用section遍歷數組$contact *}
<tr> {* 輸出表格的行開始標記 *}
<td>{$contact[line].name}</td> {* 輸出數組第二維中下標為name的元素值 *}
<td>{$contact[line].fax}</td> {* 輸出數組第二維中下標為fax的元素值*}
<td>{$contact[line].email}</td> {* 輸出數組第二維中下標為email的元素值*}
<td>{$contact[line].phone}</td> {* 輸出數組第二維中下標為phone的元素值*}
</tr> {* 輸出表格的行結束標記 *}
{/section} {* section區域的結束標記 *}
❸ smarty模板引擎有什麼用,php中怎麼用
smarty是一個使用PHP寫出來的模板PHP模板引擎.它提供了邏輯與外在html內容的分離.
作用:就是要使用PHP程序員同美工分離,使用的程序員改變程序的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程序的程序邏輯,這在多人合作的項目中顯的尤為重要。
具體使用方法是,先將smarty核心文件引入,然後做配置,然後賦值變數到模板,最後到模板進行解析就可以了。
參考教程:http://leadtodream.blog.163.com/blog/static/18520043920151711534369/
❹ smarty怎麼在模板里寫php語法
網路:csdn dmtnewtons Smarty 點擊第一條:smarty手冊
List of Examples -> 7.61. php code within {php} tags
Example7.61.phpcodewithin{php}tags
{php}
//.
include('/path/to/display_weather.php');
{/php}
Example7.62.{php}
{*thistemplateincludesa{php}blockthatassign'sthevariable$varX*}
{php}
global$foo,$bar;
if($foo==$bar){
echo'Thiswillbesenttobrowser';
}
//assignavariabletoSmarty
$this->assign('varX','Toffee');
{/php}
{*outputthevariable*}
<strong>{$varX}</strong>ismyfavicecream:-)
❺ php smarty前後台模板路徑的配置問題
$smarty=new
smarty;
$smarty->template_dir=base_path.smarty_path."templates/";
$smarty->compile_dir=base_path.smarty_path."templates_c/";
$smarty->config_dir=base_path.smarty_path."configs/";
$smarty->cache_dir=base_path.smarty_path."cache/";
//定義定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
$smarty2
=
new
smarty;
$smarty->template_dir=front_path.smarty_path."templates/";
$smarty->compile_dir=front_path.smarty_path."templates_c/";
$smarty->config_dir=front_path.smarty_path."configs/";
$smarty->cache_dir=front_path.smarty_path."cache/";
//定義定界符
$smarty->left_delimiter='<{';
$smarty->right_delimiter="}>";
不一定幾套,
你想弄幾套都行,你只要為你實例化的smarty對象做相應的設置就行啦。
❻ php smarty模板問題
既然知道display是顯示頁面了,assign是把變數定義或傳遞到頁面上去,頁面都展示攜笑了你要怎樣追加上去,如果真要在展示後的頁面改變內容,你可以在模雀隱碰板上定義,加在模板頃談上查詢數據,但這種方式並不高明,代碼講究簡約清晰規范,smarty就是講邏輯層,以及數據層分離而產生