第3回 Smartyを使ってみる(その2:制御構造編) (その1)
前回はPHPからSmartyテンプレートに変数を渡し、その値をSmartyテンプレート上に表示する手順について説明しました。今回はその変数の値による条件分岐やループなどの制御構造をどのように実現するか説明します。
条件分岐

変数の値によって、表示したい内容を変更したい場合はよくあると思います。処理の成功メッセージ、エラーメッセージを切り分ける場合、配列の要素数が1以上ある場合と0の場合で中身を表示するか、空であることを伝えるか、…など。
こういった条件によって処理を分岐するためには{if}という記述を使用します。
{* $countの値が0より大きければ個数を表示する *}
{if $count > 0}
<p>全部で{$count}個のメッセージがあります。</p>
{/if}
上記の例のようにifの後に条件式を記述し、それが真(条件式が正しい)であれば以下の{/if}までの記述が実行、表示されます。もし条件式が偽(条件式が正しくない)であれば、何も実行されません。もし偽の時に別のメッセージを表示する場合は{else}を用います。また、別条件を記述する際に{elseif}を用いることも出来ます。
{* $countの値が0より大きければ個数を表示する *}
{if $count > 0}
<p>全部で{$count}個のメッセージがあります。</p>
{elseif $count == 0}
<p>メッセージはありません。</p>
{else}
<p>メッセージ数がマイナスって…</p>
{/if}
条件の記述にはPHPで利用できる==や!=などの比較演算子、||や&&、and、orなどの論理演算子も用いることが出来ます。またis_array(),empty(),count()など、PHPの関数を用いて条件を記述することも可能です。
{* $countの値が0より大きければ個数を表示する(改) *}
{if isset( $count ) and $count > 0}
<p>全部で{$count}個のメッセージがあります。</p>
{/if}







