初めてのSmarty

更新日2008-11-21 (金) 08:58:34

Smartyパッケージのインストール

ここを見る

設定

Smartyはデフォルトではテンプレートが変更されたときはコンパイルし直すが、これではデバッグ中不十分で毎回コンパイルしなおすには

Smarty/libs/Smarty.class.phpの

    * @var boolean
    */
//   var $force_compile   =  false;
    var $force_compile   =  true;

にする

はじめに

Smartyの環境を設定する自分用のクラスをSmartyクラスの継承クラスとして作成しておく

ismSmarty.class.php

<?php

define('SMARTY_DIR', '/usr/local/Smarty/libs/');

require_once(SMARTY_DIR . 'Smarty.class.php');

class ismSmarty extends Smarty{
    public function __construct(){
//         $this->Smarty();   <=必要か不明
        $this->template_dir = '/home/okada/smatry_test/templates/';
        $this->compile_dir  = '/home/okada/smatry_test/templates_c/';
        $this->config_dir   = '/home/okada/smatry_test/configs/';
        $this->cache_dir    = '/home/okada/smatry_test/cache/';
    }
}

このクラスではSmarty.class.phpのパスと、このクラスのオブジェクトを作成するときに各必要な変数をセットする。

変数について

変数には単純変数、単純配列、連想配列、オブジェクト変数がある。

<?php

//先の自分用のクラスのパスを指定
include("../ismSmarty.class.php");
$Mysmarty = new ismSmarty();

//単純変数
$Mysmarty->assign("name", "QRA");

//
$Mysmarty->assign("word",array("Hello", "world", array("JE2", "ISM")));

//
$Mysmarty->assign("data",array("call"=>"JE2ISM", "QTH"=>array("QTH1"=>"三重
県", "QTH2"=>"伊勢市", "JCC"=>"21")));

//オブジェクト変数
//クラスの定義は後からでもOKなようだ。
$obj = new ismClass("山田花子", "2004/05/06");
$Mysmarty->assign("object", $obj); //オブジェクト変数を指定

$Mysmarty->display("test01.tpl");

class ismClass{
    function __construct($_name, $_birth){
        $this->name = $_name;
        $this->birth = $_birth;
    }
    public $name;
    public $birth;

    function getage(){
       return floor((time()-strtotime($this->birth))/(60*60*24*365));
    }
}

?>

テンプレート

場所は/home/okada/smatry_test/templatesで

test01.tpl

{* Smarty テンプレートのテスト *}

<html>
<body>

名前のことを {$name} といいます <br>

初めての言語学習は" {$word[0]} {$word[1]} " です<br>

DE {$word[2][0]}{$word[2][1]} <br>

コールは{$data.call}<br>
住所は{$data.QTH.QTH1}{$data.QTH.QTH2}<br>
JCC: {$data.QTH.JCC}<br>

名前 : {$object->name} <br>
誕生日:{$object->birth} <br>
年齢: {$object->getage()} <br>

</body>
</html>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-11-21 (金) 08:58:34 (3528d)