模板中设置变量

前面学到的变量都是在cs后台的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:变量不存在,输出空白字符串

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注