FuelPHPでSmartyを使う

以前のエントリ「FuelPHPを使ってみる」の続きです。
Twigを導入するか迷ったんですが、今回はなじみがあるのでSmartyを採用(導入)します。

最初に。

バージョン1.7.2でのセットアップ方法です。
Smartyを別途ダウンロードして来て fuel/app/venderの配下に置くという情報もありますが、1.7.2では不要の様です。

Smartyのセットアップ(インストール)

APPPATH/composer.json

"require": {
"php": ">=5.3.3",
"composer/installers": "~1.0",
 ・
 ・ (省略)
 ・
"michelf/php-markdown": "1.4.0",
"smarty/smarty": "3.*" // ←これ追加します。
},

omposer.jsonにsmartyの記述を追加し、コマンドラインから以下のコマンドを実行します。

$ php composer.phar update

APPPATH/fuel/app/config/config.php

'always_load' => array(
    'packages' => array(
         'parser',
     ),
 ),

always_loadにpacages,parserを追加します。コメントアウトされているので、コメントインするだけなのですが、pacagesの辺りだけでなく、always_loadの行もコメントアウトされているのにしばらく気づかず「Class ‘View_Smarty’ not found」のエラーから脱出できませんでした。
ここまででインストール周りは終了です。

 テンプレートの拡張子

デフォルトでは拡張子が”.smarty”になります。
ちょっとなじめないので、”.tpl”に変更します。
APPPATH/fuel/pacages/parser/classes/view/smarty.php
42行目あたりを修正します。

//public $extension = 'smarty';//コメントアウト
public $extension = 'tpl';//←tplに変更

テンプレートの追加とviewの変更

テンプレートを追加します。
APPPATH/fuel/app/views/welcomeの配下にテンプレートを配置します。今回はsmarty_index.tplとします。
APPPATH/fuel/app/views/welcome/smarty_index.tpl

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>FuelPHP Framework</title>
    </head>
    <body>
    {$body}
    </body>
</html>

APPPATH/fuel/app/classes/welcome.php を更新します。

public function action_index()
{
    //return Response::forge(View::forge('welcome/index'));// コメントアウト
    $data = array("body"=>'Smartyテンプレートテスト');// 追加
    return Response::forge(View_Smarty::forge('welcome/smarty_index', $data));// 追加
}

無事表示されれば完了です!