前面學習到的變數,都是在 C# 後台程式碼當中宣告,再於模板裡使用。實際上,可以直接在模板透過 set 指令設定變數。
一、變數定義 #set()
兩種定義變數的方式:
方式1:後台 C#/Java 程式預先定義變數,模板頁面讀取;
方式2:直接在模板內使用#set()定義變數(本課重點)
#set($name = "hello foxdevelop.com")
#set($okay = "common baby")
#set($nameokay = "$name|$okay")Code language: PHP (php)
#set(變數 = 值),支援字串、數字、陣列、物件屬性、其他變數指派- 弱型別,不用宣告變數型別
二、變數渲染兩種寫法與規範
1. 基礎形式
$name:變數不存在時,直接輸出原文$name$!name:靜默渲染,變數不存在輸出空白(建議使用,避免頁面出現$xxx亂碼文字)- 建議標準寫法:
${name}(大括號明確區隔變數邊界)
2. 邊界問題範例
#set($name = "hello")
$namehello × 引擎會把它當成變數 $namehello,找不到就直接輸出
${name}hello √ 正確,解析 $name,再接上 hello 純文字Code language: PHP (php)
三、單行註解 ##
## 這裡是註解,最終不會輸出到頁面
#set($name = "test") ## 行尾也可以寫註解Code language: PHP (php)
- 註解內容不會輸出到最終渲染網頁;
- 瀏覽器檢視網頁原始碼,也看不到註解內容(模板引擎處理階段直接捨棄註解)。
四、#set 支援的各種指派型別
## 字串指派
#set($name = "hello world")
## 把變數指派給另一個變數
#set($obj= $name)
## 物件屬性指派
#set($obj.Friend = "monica")
#set($obj.Blame = $whitehouse.Leak)
## 呼叫方法,把回傳值指派過來
#set($obj.Plan = $spindoctor.weave($web))
## 數值指派
#set($obj.Number = 123)
## 陣列指派
#set($obj.Say = ["Not", $my, "fault"])Code language: PHP (php)
五、變數不存在時的特殊規則
$sadfsdfsdCode language: PHP (php)
當模板引擎找不到該變數時:
- 一般寫法
$sadfsdfsd:直接輸出文字$sadfsdfsd - 寫成
$!sadfsdfsd:變數不存在,輸出空字串
在模板內設定變數