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:
Smarty における {if}
ステートメントは、PHP の
if と同等の柔軟性を持っています。
さらに、テンプレートエンジンのための機能をいくつか追加しています。
全ての {if}
は、対応する
{/if}
とペアである必要があります。{else}
と {elseif}
も使用できます。
|| や or、
&&、and、
is_array() など、PHP の条件演算子や関数はすべて利用可能です。
$security
が有効な場合は、 $security_settings
の配列 IF_FUNCS に含まれる PHP の関数のみが利用可能となります。
以下は認識される条件演算子の一覧です。 これらはスペースによって周りの要素から分離される必要があります。 [] 内に記載された項目は任意である事に注意して下さい。 "PHP 相当" には、PHP において当てはまるものが示されます。
条件演算子 | 代替 | 構文例 | 意味 | PHP 相当 |
---|---|---|---|---|
== | eq | $a eq $b | 等しい | == |
!= | ne, neq | $a neq $b | 等しくない | != |
> | gt | $a gt $b | より大きい | > |
< | lt | $a lt $b | より小さい | < |
>= | gte, ge | $a ge $b | 以上 | >= |
<= | lte, le | $a le $b | 以下 | <= |
=== | $a === 0 | 同一性のチェック | === | |
! | not | not $a | 否定 (単項) | ! |
% | mod | $a mod $b | 剰余 | % |
is [not] div by | $a is not div by 4 | 割り切れる | $a % $b == 0 | |
is [not] even | $a is not even | 偶数である [ない] (単項) | $a % 2 == 0 | |
is [not] even by | $a is not even by $b | 偶数番目のグループである [ない] | ($a / $b) % 2 == 0 | |
is [not] odd | $a is not odd | 奇数である [ない] (単項) | $a % 2 != 0 | |
is [not] odd by | $a is not odd by $b | 奇数番目のグループである [ない] | ($a / $b) % 2 != 0 |
Example 7.15. {if} ステートメント
{if $name eq 'Fred'} Welcome Sir. {elseif $name eq 'Wilma'} Welcome Ma'am. {else} Welcome, whatever you are. {/if} {* 論理演算子 "or" の例 *} {if $name eq 'Fred' or $name eq 'Wilma'} ... {/if} {* 上と同じ *} {if $name == 'Fred' || $name == 'Wilma'} ... {/if} {* 括弧は使用可能 *} {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} ... {/if} {* PHP 関数を埋め込むことも可能 *} {if count($var) gt 0} ... {/if} {* 配列のチェック *} {if is_array($foo) } ..... {/if} {* null でないことのチェック *} {if isset($foo) } ..... {/if} {* 値が偶数か奇数か *} {if $var is even} ... {/if} {if $var is odd} ... {/if} {if $var is not odd} ... {/if} {* 値が 4 で割り切れるかどうか *} {if $var is div by 4} ... {/if} {* ふたつずつグループ化したときに、値が even であるかどうか 0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *} {if $var is even by 2} ... {/if} {* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *} {if $var is even by 3} ... {/if}
Example 7.16. {if} のその他の例
{if isset($name) && $name == 'Blog'} {* 何かを行います *} {elseif $name == $foo} {* 何かを行います *} {/if} {if is_array($foo) && count($foo) > 0) {* foreach ループを実行します *} {/if}