FuelPHPでSmarty使えるようにした設定メモ fuelphp

FuelPHPでSmarty使えるようにした設定メモ

FuelPHPでSmartyのテンプレートエンジンを使えるようしたメモ

■1 Smartyを配置
app/vendorにSmartyを配置
app/vendor/Smarty配下に、Smarty の libs を配置する


■2 プロジェクトディレクトリの直下にあるcomposer.jsonを編集
------------------------------------------------------------
require : {
php : >=5.3.3
fuelphp/upload : 2.0.1
monolog/monolog : 1.5.*
fuelphp/upload : 2.0.*
michelf/php-markdown : 1.4.*
smarty/smarty : 3.*
}

------------------------------------------------------------


■3 php composerを実行
------------------------------------------------------------
$ php composer.phar update
------------------------------------------------------------


■4 config.phpを編集し、always_loadにparserを追加
「Parser」パッケージを読み込むようにする。
fuel/app/config/config.php
------------------------------------------------------------
always_load => array( ← コメントアウトをはずす
packages => array(
// orm
parser ← コメントアウトをはずす
)
)
------------------------------------------------------------
これをちゃんとはずさないと
ErrorException [ Fatal Error ]:Class View_Smarty not found がでるよ



■5 テンプレートの拡張子変更(.smarty -> .tpl)
(これは変えなくても問題なし)
------------------------------------------------------------
fuel/packages/parser/classes/view/smarty.phpの下記のコードを変更

// public extension = smarty ;
public extension = tpl ;
------------------------------------------------------------



サンプルテスト
■6 コントローラーの作成
app/classes/controllerの中にもともとあるwelcome.phpの、以下の部分を編集。
View_Smartyを使用するように変更

Response::forge(View::forge(); ではなく

Response::forge(View_Smarty::forge();

------------------------------------------------------------
public function action_index()
{
//return Response::forge(View::forge( welcome/index ));
$data = array(
title => タイトルあああ
body => Smartああああ
);
return Response::forge(View_Smarty::forge( welcome/index $data));
}
------------------------------------------------------------


------------------------------------------------------------
■7 smsrtyテンプレート の作成
app/views/welcomeの中に、「index.tpl」というファイルを作成。
(デフォルトでは、index.smartyだが上で拡張子tplファイルを読むよう変更してる)

<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
{* これはコメント。見えない *}
<h2>{$body}</h2>
</body>
</html>
------------------------------------------------------------