- 2006-06-08 (木)
先々月に「PHP で .php ファイルと Smarty のファイルを1つにまとめる方法」というのを紹介しました。
PHP で .php ファイルと Smarty のファイルを1つにまとめる方法の紹介です。しかし、自分としては、PHPスクリプトの途中で $tpl = にテンプレートの内容を代入して、その後 Smarty::display('var:'.$tpl) を呼び出すのは、PHP スクリプト → Smarty テンプレート → PHP スクリプト、という順序になり、あまり美しくないと思っていました。PHP でテンプレートとして Smarty を使用すると、PHPファイルの他にSmartyのテンプレートファイルが必要となる。通常はそれでかまわないのであるが、何らかの事情により、「Smarty は使いたい、でもファイルは1つにまとめたい」というような場合に、1つにする方法があります。
そこで、これを PHP スクリプト → Smarty テンプレート、で完結できるように Smarty のクラスから派生させて DirectSmarty というクラスを作ってみました。
directsmarty.class.php (PHP License)
DirectSmarty を使うと以下のような感じで PHP スクリプト、および Smarty テンプレートが記述できます。
<?php
// まずは、PHP スクリプト
rquire_once 'directsmaty.class.php';$message = 'DirectSmarty';
$t = new DirectSmarty;
$t->assign('message', $message);
$t->displayDirect();// ここから Smarty テンプレート
?>
<html>
<head>
<title>Hello {$message|escape}</title>
</head>
<body>
<h1>Hello {$message|escape}</title>
</body>
</html>
いかがでしたでしょうか。役に立ちそうでしょうか。
次にやりたいのは、PHP スクリプトの部分で定義した変数、上記の例で言うと $message、を自動的に Smarty オブジェクトに assign() したいなあと思っています。良い方法を思いついたら紹介したいと思います。
- Newer: CSRF対策 with JavaScript
- Older: ShareToDo