在模板內設定變數

前面學習到的變數,都是在 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)
  1. 註解內容不會輸出到最終渲染網頁
  2. 瀏覽器檢視網頁原始碼,也看不到註解內容(模板引擎處理階段直接捨棄註解)。

四、#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:變數不存在,輸出空字串

在模板內設定變數

發佈留言

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