What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{assign}
は、テンプレート変数を
テンプレートの実行時に
代入します。
テンプレート内で変数に代入するというのは、 本質的にはアプリケーションのロジックをプレゼンテーションに持ち込んでいることになります。 これは本来 PHP 側でやったほうがうまく処理できることでしょう。 自己責任のもとで使いましょう。
テンプレート変数を代入するときの
短縮形
も参照ください。
属性
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
var | string | Yes | n/a | 代入される変数の名前 |
value | string | Yes | n/a | 代入される値 |
scope | string | No | n/a | 代入する変数のスコープ。'parent'、'root' あるいは 'global' |
オプションのフラグ
名前 | 概要 |
---|---|
nocache | 変数を 'nocache' 属性つきで代入する |
Example 7.8. {assign}
{assign var="name" value="Bob"} {assign "name" "Bob"} {* 短縮形 *} The value of $name is {$name}.
上の例の出力は次のようになります。
The value of $name is Bob.
Example 7.9. nocache を指定した変数による {assign}
{assign var="name" value="Bob" nocache} {assign "name" "Bob" nocache} {* 短縮形 *} The value of $name is {$name}.
上の例の出力は次のようになります。
The value of $name is Bob.
Example 7.10. 計算結果の {assign}
{assign var=running_total value=$running_total+$some_array[$row].some_value}
Example 7.11. 呼び出し元テンプレートのスコープでの {assign}
インクルードされたテンプレート内で代入した変数は、インクルードした側のテンプレートからも見えます。
{include file="sub_template.tpl"} ... {* サブテンプレートで代入した変数を表示します *} {$foo}<br> ...
上のテンプレートでインクルードしている sub_template.tpl
の例を次に示します。
... {* foo はインクルード元のテンプレートからも見えます *} {assign var="foo" value="something" scope=parent} {* bar はこのテンプレート内でしか見えません *} {assign var="bar" value="value"} ...
Example 7.12. 現在のスコープツリーへの変数の {assign}
現在のツリーのルートに変数を代入することができます。この変数は、同じツリーを使うすべてのテンプレートから見えるようになります。
{assign var=foo value="bar" scope="root"}
Example 7.13. グローバル変数の {assign}
グローバル変数は、すべてのテンプレートから見えます。
{assign var=foo value="bar" scope="global"} {assign "foo" "bar" scope="global"} {* 短縮形 *}
Example 7.14. {assign} された変数への PHP スクリプトからのアクセス
{assign}
した変数に PHP スクリプトからアクセスするには
getTemplateVars()
を使います。
このテンプレートでは、変数 $foo
を作ります。
{assign var="foo" value="Smarty"}
テンプレート変数にアクセスできるのは、テンプレートの実行中か実行後のみです。 次のスクリプトのようになります。
<?php // まだテンプレートを実行していないので、これは何も出力しません echo $smarty->getTemplateVars('foo'); // テンプレートを変数に取り込みます $whole_page = $smarty->fetch('index.tpl'); // テンプレートを実行した後なので、これは 'smarty' を出力します echo $smarty->getTemplateVars('foo'); $smarty->assign('foo','Even smarter'); // これは 'Even smarter' を出力します echo $smarty->getTemplateVars('foo'); ?>
次にあげる関数にも、オプションで テンプレート変数を代入することができます。
{capture}
,
{include}
,
{include_php}
,
{insert}
,
{counter}
,
{cycle}
,
{eval}
,
{fetch}
,
{math}
,
{textformat}
{$var=...}
、
assign()
および
getTemplateVars()
も参照ください。