プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Smarty、変数にデフォルト値を設定
今回はテンプレートファイルの変数に値が渡ってこなかったときのお話です。
「その変数は未定義だ、ばーか、ばーか」って怒られちゃうシチュエーションですね。

Smartyさんでは、変数が空の場合にデフォルト値を表示できるのだそうです。
やり方は簡単で、テンプレートファイルにこんな感じに書けばOKφ(--)

{$変数名|default: "デフォルト値"}

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

■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("msg", "あああ");


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

■test.tpl
<html>
<head><title></title></head>
<body>
    {$msg|default: "hoge"}<br />
</body>
</html>

こんな結果が表示されますφ(--)

hoge

変数「$msg」に値をassignしなくても怒られませんでした。
デフォルト値の「hoge」が表示されていますね。

1つのテンプレートファイル内で同じ変数を複数回使う場合は

{assign var='変数名' value=$変数名|default:'デフォルト値'}

ってな記述をテンプレート内にすることでまとめて定義しちゃうこともできます。
例えばこんな感じのコードを書くとφ(--)

■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("msg", "あああ");


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

■test2.tpl
{assign var='msg' value=$msg|default:'hogehoge'}
<html>
<head><title></title></head>
<body>
    {$msg}<br />
    {$msg}<br />
</body>
</html>

こんな結果が表示されますよφ(--)

hogehoge
hogehoge

ぶっちゃけ、これだけです。
勿体ぶってごめんなさいm(__)m
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

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

  関連記事