Smartyのテンプレート内で、配列の中に指定した値があるかどうかや、そもそも配列かどうか、そして該当の変数が存在するかどうかを判定する方法です。
テンプレート内に下記のようにすることで判定できます。
{* 変数が存在するかどうか *}
{if isset($value)}
変数が存在する
{else}
変数が存在しない
{/if}
{* 配列かどうか *}
{if is_array($value)}
配列だ
{else}
配列じゃない
{/if}
{* 配列内に、100が存在するかどうか *}
{if 100|in_array:$value}
存在する
{else}
存在しない
{/if}
{* 配列内に、100が存在するかどうか
の別バージョン *}
{if in_array(100 , $value)}
存在する
{else}
存在しない
{/if}
テンプレートなので、本来は条件分岐などは書かない方がきれいなのですが、まぁどうしても必要というが結構あるので、そのような時は重宝します。
ところで、{ や | , } ですが、下記のようにスペース等挟むとエラーになるので注意が必要です。これで、結構悩みましたorz
{if isset($value) }
とか
{if 100 | in_array:$value}
等はエラーになる。
参考:
Smartyで 配列の中に要素があるかを調べる (in_array )
Smartyテンプレート内でissetやemptyが使えない場合 issetを使う場合、注意が必要な場合もあるようです。