Get Smarty

Donate

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

Buy cheap glasses from Cheapglasses123.com and save up to 80%.

Where to buy prescription glasses? EyewearCanada.com is your best choice!

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Shop for 2018 World Cup Football Boots Online sale at guthjcc.com

Browse best 2018 world cup soccer cleats and shoes from SoccerAzteca.com

Advertisement

{call}

{call} は、 {function} タグで定義したテンプレート関数をプラグイン関数のようにコールします。

Note

テンプレート関数はグローバルに定義されます。Smarty のコンパイラはシングルパスのコンパイラなので、 指定したテンプレートの外部で定義されたテンプレート関数をコールするときには {call} タグを使わなければなりません。それ以外の場合は、テンプレート内で直接 {funcname ...} として関数を使うことができます。

  • {call} タグには name 属性が必須です。 ここに、テンプレート関数の名前を書きます。

  • 属性 を使って、テンプレート関数に変数として値を渡すことができます。

属性

属性名 必須 デフォルト 概要
name string Yes n/a テンプレート関数の名前
assign string No n/a コールしたテンプレート関数の出力を代入する変数の名前
[var ...] [var type] No n/a ローカルからテンプレート関数に渡す変数

オプションのフラグ

名前 概要
nocache テンプレート関数を nocache モードでコールする

Example 7.20. 再帰的なメニューの例


{* 関数の定義 *}
{function name=menu level=0}
  <ul class="level{$level}">
  {foreach $data as $entry}
    {if is_array($entry)}
      <li>{$entry@key}</li>
      {call name=menu data=$entry level=$level+1}
    {else}
      <li>{$entry}</li>
    {/if}
  {/foreach}
  </ul>
{/function}

{* 例として使う配列を作成します *}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}

{* 配列を関数に渡します *}
{call name=menu data=$menu}
{call menu data=$menu} {* 短縮形 *}

  

出力は、次のようになります。


* item1
* item2
* item3
      o item3-1
      o item3-2
      o item3-3
            + item3-3-1
            + item3-3-2
* item4

  

{function} も参照ください。

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 18 plus 14? (Are you human?)

Advertisement