Title1

Title2

Title3

24-1 SMARTY保留變數

在樣版裡,我們可以透過Smarty預先定義好的變數,以存取PHP中的全域變數(SuperGlobals)

Smarty 保留變數 等同的PHP變數
$smarty.get $_GET
$smarty.post $_POST
$smarty.request $_REQUEST
$smarty.session $_SESSION
$smarty.cookies $_COOKIE
$smarty.env $_ENV
$smarty.server $_SERVER
$smarty.const 利用define函式定義的常數
  1. 得到陣列的數量:<{$array|@count}>
  2. 刪除快取:    $smarty->clearAllCache();
  3. 循環取得變數(2.xx)
    <{foreach from=$teams item=team name=team_f}>   <{/foreach}>
    將foreach 命名為「team_f」
    <{$smarty.foreach.team_f.first}> :第1次執行 foreach迴圈
    <{$smarty.foreach.team_f.last}> :最後1次執行 foreach迴圈
    <{$smarty.foreach.team_f.iteration}> :取得迴圈的計數值,依序輸出1、2、3......
    <{$smarty.foreach.team_f.total}> :取得迴圈執行總數,等同<{$array|@count}>

    <{assign var=conuter value=$smarty.foreach.n.total+1}>
    <{$conuter}>
  4. 另一種方法(3.xx)
    $row@first:第一次執行foreach
    $row@last:最後1次執行 foreach
    $row@index:取得迴圈的計數值 0、1、2、........
    $row@total:取得迴圈執行總數

        <section>
          <div class="container">
            <h1>成績單</h1>
            <table class="table table-hover table-bordered">
              <{foreach $rows as $row}>
                <{if $row@first}>
                  <tr>
                    <th>序</th>
                    <th>姓名</th>
                    <th>國文</th> 
                    <th>英文</th> 
                    <th>社會</th>            
                  </tr>
                <{/if}>
                <tr>
                  <{assign var=conuter value=$row@index+1}>
                  <td><{$conuter}></td>
                  <td><{$row.name}></td>
                  <td><{$row.chinese}></td>  
                  <td><{$row.english}></td>
                  <td><{$row.society}></td>          
                </tr>
                <{if $row@last}>
                  <tr>
                    <th colspan=5>總共有:<{$row@total}>人</th>
                  </tr>
                <{/if}>
              <{/foreach}>          
            </table>
          </div>
        </section>

    php
     

    
    $rows[0]['name']="東方不敗";
    $rows[0]['chinese']=89;
    $rows[0]['english']=60;
    $rows[0]['society']=70;
    
    $rows[1]['name']="楊過";
    $rows[1]['chinese']=60;
    $rows[1]['english']=80;
    $rows[1]['society']=66;
    
    $rows[2]['name']="小龍女";
    $rows[2]['chinese']=50;
    $rows[2]['english']=100;
    $rows[2]['society']=90;
    $smarty->assign('rows', $rows);

     

  5. 在樣板中,Smarty 也可以直接拿PHP的函數來用,我們稱之為「變數修飾器」,例如:
    變數後面要加上 |
    | 後面加上函數名稱,函數需要的參數用 : 格開

    例:得到檔案名稱

    <{$SCRIPT_NAME|basename}>

     

  6. 自訂義變數
    <{assign var=theme_name value=$xoTheme->folderName}>