Title1

Title2

Title3

15-1 Smarty其他常用功能

一、常用功能

  1. Smarty註解
    {* 註解 *}
  2. Smarty變數
    傳送內容 PHP檔(*.php) Smarty樣板檔(*.tpl)
    一般變數
    $name="ugm";
    $smarty->assign('name', $name);

    {$name}

    一維陣列
    $user['name']="ugm";
    $user['birthday']="1969-11-25";
    $smarty->assign('user', $user);

    {$user.name} 的生日是 {$user.birthday}

    二維陣列
    $users[1]['name']="ugm";
    $users[1]['birthday']="1969-11-25";
    $users[2]['name']="adam";
    $users[2]['birthday']="2000-07-06";
    $smarty->assign('users', $users);

    {foreach $users as $user}
      {$user.name} 的生日是{$user.birthday}
    {/foreach}
    {$user.1.name} 的生日是 {$user.1.birthday}
    {$user.2.name} 的生日是 {$user.2.birthday}

  3. Smarty陣列
  4. Smarty物件

    class user{

      public $name = "Ugm";

      public function sex(){

        return "先生";

      }

    }

    $user = new user;

    $smarty->assign('user',$user);

    {$user->name}{$user->sex()}您好!
    輸出結果:「Ugm先生您好!」

二、基本語法

  1. 在樣板中,可以直接用 $samrty.get 來取得所有 $_GET 的變數陣列,同理若要在樣板中取得 $_SESSION,那就是用 $smarty.session
  2. 變數送至樣板檔:$smarty->assign('樣板標籤名稱', $變數值);
  3. 樣板檔一律放至 templates 目錄中
  4. 刪除快取:$smarty->clearAllCache();
  5. 在樣板中,Smarty 也可以直接拿PHP的函數來用,我們稱之為「變數修飾器」,例如:
    {if $變數|in_array:$陣列}
    變數後面要加上 |
    | 後面加上函數名稱,函數需要的參數用 : 格開
    {$user->name|upper}

 

三、 常用Smarty迴圈用法

  1. Smarty迴圈用來處理陣列,常用方法如下:
    {foreach $來源變數 as $別名}
      {$別名.索引}
    {foreachelse}
      該變數沒有值時要出現的內容
    {/foreach}
  2. 迴圈還有一些特別的用法:
    • {$別名@first} 迴圈第一圈
    • {$別名@last} 迴圈最後一圈
    • {$別名@index} 取得迴圈的索引值,依序輸出0、1、2......
    • {$別名@iteration} 取得迴圈的計數值,依序輸出1、2、3......
    • {$別名@total} 取得迴圈執行總數
  3. 詳情可見:http://www.smarty.net/docs/en/language.function.foreach.tpl