- Smartyの考え方 -
WebページってHTMLとかPHPとかSQLとかいろんな言語が1つのファイルに書いてあってカオスwww
つーか,デザイン担当とロジック担当が違ったら大変すぎるよな.
・・・じゃあ,最初からデザインとロジックでファイルを分けりゃいいんだ!
こんな感じ.
Smartyの実体はPHPによって書かれたクラスファイル.
よって,PHPが使える環境であればどこでも使える.
レン鯖であっても,
公式:http://www.smarty.net/
のdownloadからDLしたディレクトリを丸ごとうpすればいい.
しかし,その場合,セキュリティ対策は必要.
以下に例.
▼owata.php
<?php
require_once 'config/config.inc.php'; // ここにディレクトリ場所とかdefineされてる
require_once _DIR_SMARTY_LIBS . 'Smarty.class.php';
$smarty->Smarty();
// Smartyのディレクトリ設定
$smarty->template_dir = _DIR_SMARTY_TEMPLATES; // templeteディレクトリ
$smarty->compile_dir = _DIR_SMARTY_COMPILE; // completeディレクトリ
$smarty->config_dir = _DIR_SMARTY_CONFIG; // configディレクトリ
$smarty->cache_dir = _DIR_SMARTY_CACHE; // cacheディレクトリ
$smarty->assign('owata', 'そうだ!樹海に行こう!');
$smarty->display("owata.tpl");
?>
▼owata.tpl
<html>
<body>
ニートの提案「{$owata}」
</body>
</html>
▼実行結果(owata.phpにブラウザからアクセス)
ニートの提案「そうだ!樹海に行こう!」
owata.phpにアクセスすると,
$smarty->display("owata.tpl");
で,テンプレートファイルowata.tplを読み出して中のHTMLを表示する.
そのとき,予め,
$smarty->assign();
で,設定しておいた中身の置き換えを行う.
ここでは,owata.tpl中の{$owata}を「そうだ!樹海に行こう!」に置き換える.
ちなみに,テンプレートファイルのディレクトリ位置は,
$smarty->template_dir
で設定したディレクトリ位置となる.
これが非常に便利だと考えられるのは,PHPの処理次第でテンプレートを変更できることにある.
例えば,PHPでありがちな,「エントリー」→「内容確認」→「完了」.
<input>タグのaction属性を自分にしておき,ボタンを押したときのPOSTで判断して処理を変える場合,
if(isset($_POST["entrySubmit"])) {
// ~ここにいろいろ処理~
// エントリー内容の確認
$smarty->display("confirm.tpl");
}
else if($isset(_POST["confirmSubmit"])) {
// ~DBに登録とかいろいろ処理~
// 登録内容の表示
$smarty->display("entryResult.tpl");
}
else {
// 通常の表示(エントリーページ)
$smarty->display("entry.tpl");
}
といった感じに,状況に応じてテンプレートファイルを変更することが可能.
0 件のコメント:
コメントを投稿