プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Smarty、条件分岐の書き方
今回はテンプレート内で条件分岐するときのお話です。
個人的にはview内にゴリゴリ処理を書くのはあまり好きじゃないのですけどね。
背に腹は代えられない場合も結構あります。

と言う訳で、テンプレート内での条件分岐の書き方はこちらφ(--)

{if 条件1}
    処理1
{elseif 条件2}
    処理2
{else}
    処理3
{/if}

普通にif文が使えるってことですね。

例えばこんな感じのコードを書くとφ(--)

■test.php
<?php
    //「Smarty.class.php」をインクルード
    require_once(dirname(__FILE__) . '/smarty/libs/Smarty.class.php');

    //インスタンス作成
    $smarty = new Smarty();

    //ディレクトリ指定
    $smarty->template_dir = dirname(__FILE__) . "/templates";
    $smarty->compile_dir = dirname(__FILE__) . "/templates_c";
    $smarty->cache_dir = dirname(__FILE__) . "/cache";
    $smarty->config_dir = dirname(__FILE__) . "/config";

    //値設定
    $smarty->assign("val1", "10");
    $smarty->assign("val2", "10");
    $smarty->assign("val3", "20");
    $smarty->assign("val4", "5");

    //テンプレート表示
    $smarty->display("test.tpl");
?>

■test.tpl
<html>
<head><title></title></head>
<body>

○$val1と$val2の比較
{if $val1 > $val2}
    「val1 > val2」<br>
{elseif $val1 == $val2}
    「val1 == val2」<br>
{else}
    「val1 < val2」<br>
{/if}

○$val2と$val3の比較
{if $val2 > $val3}
    「val2 > val3」<br>
{elseif $val2 == $val3}
    「val2 == val3」<br>
{else}
    「val2 < val3」<br>
{/if}

○$val3と$val4の比較
{if $val3 > $val4}
    「val3 > val4」<br>
{elseif $val3 == $val4}
    「val3 == val4」<br>
{else}
    「val3 < val4」<br>
{/if}

</body>
</html>

こんな感じの結果になりますφ(--)

○$val1と$val2の比較 「val1 == val2」
○$val2と$val3の比較 「val2 < val3」
○$val3と$val4の比較 「val3 > val4」

ちなみにif文の中の条件はPHPの関数も使えるらしい。
「count()」とか「isset()」とかそんな奴等ですね。

こんな感じのコードを書くとφ(--)

■test2.php
<?php
    //「Smarty.class.php」をインクルード
    require_once(dirname(__FILE__) . '/smarty/libs/Smarty.class.php');

    //インスタンス作成
    $smarty = new Smarty();

    //ディレクトリ指定
    $smarty->template_dir = dirname(__FILE__) . "/templates";
    $smarty->compile_dir = dirname(__FILE__) . "/templates_c";
    $smarty->cache_dir = dirname(__FILE__) . "/cache";
    $smarty->config_dir = dirname(__FILE__) . "/config";

    //値設定
    $smarty->assign("val1", array(1,2,3));
//val2は定義しない
//    $smarty->assign("val2", "aaa");


    //テンプレート表示
    $smarty->display("test2.tpl");
?>

■test2.tpl
<html>
<head><title></title></head>
<body>

○$val1の要素数チェック
{if count($val1) >= 3}
    3つ以上あるよ<br>
{else}
    2つ以下だよ<br>
{/if}

○$val2の存在チェック
{if isset($val2)}
    val2があるよ<br>
{else}
    val2が無いよ<br>
{/if}

</body>
</html>

こんな結果になりますφ(--)

○$val1の要素数チェック 3つ以上あるよ
○$val2の存在チェック val2が無いよ

switch文は無いみたいですね。
Smartyでの条件分岐、ぶっちゃけこれだけです(--)ノ
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:Smarty  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事