プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Smarty、テンプレートへ値を渡す方法
そーいやSmarty関連まとめてなかったなーと思ったので
使い方をメモっておきまする(--)ノ

今回はテンプレートファイルへの値の渡し方です。
PHP上であれやこれやと処理した値を画面で表示したいことがありますからね。

それではやり方ですが、

$smarty->assign(変数名, );

で渡せます。

受け取るテンプレートの方では

{$変数名}

と書けば、そこに渡された値がスッポリ入りますよ。

例えば

■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("test.tpl");
?>

■test.tpl
<html>
<head><title></title></head>
<body>
    {$msg}
</body>
</html>

のような形です。

変数に設定できる値は文字列とかだけではありません。
配列でもなんでもご自由にどーぞです。

配列を渡す場合は例えば

■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";
    
    //表示データをアサイン
    $ary = array('aaa', 'bbb', 'ccc');
    $smarty->assign("msg", $ary);
    
    //テンプレート表示
    $smarty->display("test2.tpl");
?>

■test2.tpl
<html>
<head><title></title></head>
<body>
    {$msg[0]}<br />
    {$msg[1]}<br />
    {$msg[2]}<br />
</body>
</html>

のような形でいけちゃいます。
テンプレート側では

{$msg[0]}

のように要素番号を付ければその要素にアクセスできますよ。
普通の配列の使い方と同じですね。

更にですね(--)b

自分で作ったオブジェクトをテンプレートに渡すこともできます。
例えば

■test3.php
<?php
    class HogeClass {
        public $var1 = "あああ";
        public $var2 = "いいい";
        public $var3 = "ううう";
    }


    //「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";
    
    //表示データをアサイン
    $obj = new HogeClass();
    $smarty->assign("msg", $obj);
    
    //テンプレート表示
    $smarty->display("test3.tpl");
?>

■test3.tpl
<html>
<head><title></title></head>
<body>
    {$msg->var1}<br />
    {$msg->var2}<br />
    {$msg->var3}<br />
</body>
</html>

のようなやり方ですね。
「HogeClass」をテンプレートに渡して、テンプレート側では

{$msg->var1}

のようにPHP上で使うオブジェクトっぽくアクセスしています。

まぁ難しい所は無さそうですね。
結局、PHPからは

$smarty->assign(変数名, );

で渡せばよくて、テンプレートファイルでは

{$変数名}

で受け取れちゃうよーなだけのお話でした。

Smartyでのテンプレートファイルへの値の受け渡し、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

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

  関連記事