FuelPHPをやってみる (11) - Smartyを使う -
PHPを色々やってた時にテンプレートエンジンといえばSmartyな感じで良く使ってた記憶があるので、とりあえずじゃあSmarty使いましょうかと思ってやってみた
Smartyのインストール
http://www.smarty.net からパッケージをダウンロード後に展開して出来たディレクトリをfuel/app/vendor内に突っ込む
View_Smartyの有効化
View_Smarty自体はparserパッケージに含まれているのでfuel/app/config/config.phpを修正する
<?php
return array(
"language" => "ja",
"log_threshold" => Fuel::L_ALL,
"always_load" => array(
"packages" => array(
"orm",
"parser" // 追加
)
)
);
でついでにparserな設定ファイル(fuel/packages/parser/config/parser.phpをfuel/app/configとかにコピーしておく。必要があれば色々修正しておく。ただしここで設定出来るのはView_Smarty等で設定をロードする名目が存在しているもののみな模様(auto_literalの設定をする場合はparserパッケージ内のソースを直接修正する必要がある?)
fuel/app/classes/controller/home.php
<?php
class Controller_Home extends Controller {
public function get_index() {
return View_Smarty::forge(
"home/index",
array(
"names" => array(
array("name" => "hoge"),
array("name" => "fuga"),
array("name" => "foobar")
)
)
);
}
}
View_Smartyで$extensionが"smarty"になっているので拡張子が.smartyなのが読み込まれる。View_Smartyでやれば特に拡張子を指定しなくてもいいけど、Viewクラスを使ってSmartyテンプレートをレンダリングする場合には"home/index"ではなく"home/index.smarty"等のようにする必要がある
fuel/app/views/home/index.smarty
{foreach item=item from=$names}
<h2>{$item.name}</h2>
{/foreach}
<script type="text/javascript">
(function() {
console.log("test");
})();
</script>
今はauto_literalっていう仕様があるようなのでJavaScriptを含んでも{literal}しなくても良い模様。