지금까지 배운 변수는 C# 백엔드 코드에서 정의한 뒤 템플릿에서 사용하는 방식이었습니다. 사실 set 지시자를 이용해 템플릿 내부에서 직접 변수를 선언할 수 있습니다.
1. 변수 정의 #set()
변수를 정의하는 두 가지 방식:
방식1: 백엔드 C#/Java 코드에서 미리 변수를 정의하고 템플릿 페이지에서 읽어오기;
방식2: 템플릿 안에서#set()으로 직접 변수 정의(이번 강의 핵심)
#set($name = "hello foxdevelop.com")
#set($okay = "common baby")
#set($nameokay = "$name|$okay")Code language: PHP (php)
#set(변수 = 값):문자열, 숫자, 배열, 객체 속성, 다른 변수 할당을 지원합니다- 약타입 언어이므로 변수 타입 선언이 필요 없습니다
2. 변수 렌더링 문법 및 규칙
2.1 기본 형식
$name:변수가 없으면$name문자열 그대로 출력$!name:자동 비우기 렌더링,변수가 없을 때 빈 값 출력. 페이지에$xxx가 보이는 것을 막으므로 권장- 권장 표준 문법:
${name}(중괄호로 변수 범위를 명확히 구분)
2.2 경계 문제 예시
#set($name = "hello")
$namehello × 엔진이 $namehello 라는 변수로 인식해 찾지 못함
${name}hello √ 정상, $name을 해석한 뒤 hello 텍스트 이어 붙임Code language: PHP (php)
3. 한 줄 주석 ##
## 여기는 주석, 최종 결과에 출력되지 않음
#set($name = "test") ## 줄 끝에도 주석 작성 가능Code language: PHP (php)
- 주석 내용은최종 렌더링된 페이지에 출력되지 않습니다;
- 브라우저에서 페이지 소스 보기를 해도주석 텍스트가 보이지 않습니다(템플릿 엔진 처리 단계에서 제거).
4. #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)
5. 변수가 존재하지 않을 때 특수 규칙
$sadfsdfsdCode language: PHP (php)
템플릿 엔진이 해당 변수를 찾지 못할 경우:
- 일반 문법
$sadfsdfsd:문자열$sadfsdfsd그대로 출력 $!sadfsdfsd로 작성:변수가 없으면 빈 문자열 출력
템플릿 안에서 변수 설정하기