Table of Contents
Smarty にはいくつかの組み込み関数があります。 これらはテンプレートエンジンにとって必要不可欠なものです。 組み込み関数はコンパイル時に PHP のコードに展開され、 最大のパフォーマンスを発揮します。
これらと同じ名前の カスタム関数 を作成したり、組み込み関数を修正したりする事はできません。
これらの関数の一部は assign
属性を持っており、
結果を出力せずにここで指定した名前のテンプレート変数に格納します。これは
{assign}
関数と似ています。
これは {assign} 関数の短縮形です。 値を直接テンプレートに代入したり、配列の要素に代入したりできます。
Note
テンプレート内で変数に代入するというのは、 本質的にはアプリケーションのロジックをプレゼンテーションに持ち込んでいることになります。 これは本来 PHP 側でやったほうがうまく処理できることでしょう。 自己責任のもとで使いましょう。
次の属性をタグに追加することができます。
属性
属性名 | 短縮形 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|---|
scope | n/a | string | No | n/a | 代入する変数のスコープ。'parent'、'root' あるいは 'global' |
オプションのフラグ
名前 | 概要 |
---|---|
nocache | 変数を 'nocache' 属性つきで代入する |
Example 7.1. シンプルな代入
{$name='Bob'} The value of $name is {$name}.
上の例の出力は次のようになります。
The value of $name is Bob.
Example 7.6. 呼び出し元テンプレートのスコープでの代入
インクルードされたテンプレート内で代入した変数は、インクルードした側のテンプレートからも見えます。
{include file="sub_template.tpl"} ... {* サブテンプレートで代入した変数を表示します *} {$foo}<br> ...
上のテンプレートでインクルードしている sub_template.tpl
の例を次に示します。
... {* foo はインクルード元のテンプレートからも見えます *} {$foo="something" scope=parent} {* bar はこのテンプレート内でしか見えません *} {$bar="value"} ...