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"}
...
