Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

ダブルクォート内に埋め込まれた変数

  • Smarty が "ダブルクォート" で囲まれた内容の中から 割り当てられた 変数 として認識するのは、変数名が数字・文字・_(アンダースコア)のみで構成されているものだけです。詳細は 名前の付けかた を参照ください。

  • その他の文字、たとえば .(ピリオド)や $object>reference(オブジェクト参照)を含む場合は、 その変数を `バッククォート` で囲む必要があります。

  • さらに、Smarty3 ではダブルクォートで囲んだ文字列中に Smarty タグを埋め込めるようになりました。 これは、修飾子つきの変数やプラグイン、PHP の関数の結果などを扱うときに便利です。

Example 3.5. 構文の例


{func var="test $foo test"}              // $foo を参照します
{func var="test $foo_bar test"}          // $foo_bar を参照します
{func var="test `$foo[0]` test"}         // $foo[0] を参照します
{func var="test `$foo[bar]` test"}       // $foo[bar] を参照します
{func var="test $foo.bar test"}          // $foo ($foo.bar ではありません) を参照します
{func var="test `$foo.bar` test"}        // $foo.bar を参照します
{func var="test `$foo.bar` test"|escape} // クォートの外での修飾子
{func var="test {$foo|escape} test"}     // クォートの中での修飾子
{func var="test {time()} test"}          // PHP の関数の結果
{func var="test {counter} test"}         // プラグインの結果
{func var="variable foo is {if !$foo}not {/if} defined"} // Smarty ブロック関数

  

Example 3.6. 実用例


{* $tpl_name を値で置き換えます *}
{include file="subdir/$tpl_name.tpl"}

{* $tpl_name を置き換えません *}
{include file='subdir/$tpl_name.tpl'} // 変数にはダブルクォートが必要です!

{* "." を含むのでバッククォートで囲む必要があります *}
{cycle values="one,two,`$smarty.config.myval`"}

{* "." を含むのでバッククォートで囲む必要があります *}
{include file="`$module.contact`.tpl"}

{* ドット構文で変数を使うことができます *}
{include file="`$module.$view`.tpl"}

  

Note

Smarty では非常に複雑な演算や構文を処理することもできますが、 テンプレートの構文は必要最小限にして表示内容に注力することをお勧めします。 もしテンプレートの構文が複雑になりすぎてきたと感じたら、 表示内容に直接関係のない部分をプラグインや修飾子として PHP 側に追い出すとよいでしょう。

escape も参照ください。