FuelPHPをやってみる (11) - Smartyを使う -

2012-11-13T00:00:00+00:00 FuelPHP PHP 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}しなくても良い模様。

android.service.dreams.DreamServiceを使ってみる Eclipse BIRTを使ってみる (4) - Scripted DataSetを使う -