基礎模板語法

一、傳遞實體物件給模板

1. PageInfo實體類別

過去我們只傳入單一字串,不僅效率差,後續維護也很麻煩。透過封裝實體物件,可以讓程式碼更直觀好讀。

public class PageInfo
{
    private bool IsShowImage;
    public bool IsShowImage1
    {
        get { return IsShowImage; }
        set { IsShowImage = value; }
    }
}Code language: C# (cs)
  • 私用欄位IsShowImage,對外開放屬性IsShowImage1
  • 模板存取寫法:$info.IsShowImage1

2. 填入上下文資料

//模板上下文容器
IContext context = new VelocityContext();

PageInfo pi = new PageInfo();
pi.IsShowImage1 = true;

//將物件pi以鍵名info存入上下文
context.Put("info",pi);

//字串變數範例
context.Put("infotitle","你好");Code language: C# (cs)

context.Put("鍵名",資料):把資料交給模板,模板透過$鍵名讀取資料。

二、Velocity模板核心語法

1. 指令符號 #

開頭帶#即為模板指令,常用:
#if#else#end#foreach#set#include

條件渲染範例:

準備兩張圖片,放到網站根目錄的Contents/Images資料夾,透過設定IsShowImage1切換要顯示的圖片

#if($info.IsShowImage1)
    <img src="./Contents/Images/a.gif" />
#else
    <img src="./Contents/Images/b.gif" />
#endCode language: PHP (php)

邏輯:當IsShowImage1=true顯示a.gif,反之顯示b.gif

2. 變數符號 $

  • $變數名稱:輸出變數內容
  • ${變數名稱}界定變數邊界(重點!)

場景:變數後緊接文字,引擎無法分辨變數名結束位置

錯誤寫法:$infotitlefoxdevelop.com
引擎會把整串視為變數 infotitlefoxdevelop,該變數不存在!

正確寫法:${infotitle}foxdevelop.com
引擎讀取infotitle變數,再接上字串foxdevelop.comCode language: PHP (php)

3. 靜默輸出符號 !$!變數名稱

預設行為:變數不存在時,頁面直接輸出原始$變數名稱文字
$!變數名稱:變數不存在或是null時,輸出空白,不會印出$符號

對照範例:

寫法變數存在(值=”你好”)變數不存在
$infotitle你好$infotitle
$!infotitle你好(空白,沒有任何內容)
${infotitle}你好${infotitle}
$!{infotitle}你好空白

完整測試程式碼:

${infotitle}foxdevelop.com <br/>
$!infotitlefoxdevelop.com <br/>
$infotitle <br/>
$!infotitle <br/>Code language: HTML, XML (xml)

總結

  1. 變數後面要拼接文字,務必使用 ${變數}包裹
  2. 正式環境建議優先使用 $!{變數名稱},避免變數空值時印出原始$xxx打亂頁面排版
  3. #if判斷布林屬性,直接寫#if($info.IsShowImage1),不需要額外加上==true

基礎模板語法

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *