テンプレート内で変数を設定する

これまで学習した変数はC#のコードビハインド側で定義し、テンプレートから参照する方式でした。実はテンプレート内部でsetディレクティブを使って直接変数を定義できます。

1. 変数定義 #set()

変数定義は2通りあります:
方法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. 1行コメント ##

## ここはコメント。最終的な画面に出力されない
#set($name = "test") ## 行末にコメントを書くことも可能Code language: PHP (php)
  1. コメント内容はレンダリング結果に出力されません
  2. ブラウザでページソースを表示してもコメントは見えません(テンプレートエンジン側で破棄される)。

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 の場合:変数無しなら空文字を出力

テンプレート内で変数を設定する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です