FuelPHP の view で Smarty を使うことが出来ます。
FuelPHP-1.8.2 でも動作確認できていますが、1.7 系での設定なので古いかもしれません(/_\*)
設定手順
composer の設定
まずは、FuelPHP の composer の設定に Smarty を追加します。
以下のように composer.json の require に "smarty/smarty": "*" を記載します。
1.7系の時は "3.*" の方が無難かも。
"require": {
"php": ">=5.3.3",
"composer/installers": "~1.0",
"fuel/core": "1.8.*",
"fuel/auth": "1.8.*",
"fuel/email": "1.8.*",
"fuel/oil": "1.8.*",
"fuel/orm": "1.8.*",
"fuel/parser": "1.8.*",
"fuelphp/upload": "2.0.6",
"smarty/smarty": "*"
},
追加後、反映させるために update します。
% php composer.phar update
これで必要なファイルが設置されます。
ちなみになにやら Composer のメッセージが表示された場合には、PHP: Composer をどうぞ。
Parse パッケージの有効化
次に、Parse パッケージを使えるようにします。config/config.php の always_load の packages のリストに parser を追加します。
'always_load' => array(
'packages' => array(
'parser',
),
拡張子の変更
デフォルトでは、Smarty のファイルは .smarty という拡張子に設定されています。
誰のセンスか分かりませんが、非常にイマイチだと思いますので変えたいです(^_^;
やはりスタンダードなのは .tpl でしょうか。
いくつかやり方があるとは思うのですが、簡単なのは fuel/packages/parser/classes/view/smarty.php の $extension を以下のように直接変更してしまうことです。
public $extension = 'tpl';
既存パッケージを変更してしまうのはイマイチ、、、と感じる人は、独自のパッケージで拡張 view クラスを作成して always_load の packages に追加して、、、みたいなことをやると美しいかもしれません(^_^;
テンポラリ領域設定
Smarty は app/tmp/Smarty 以下に templates_c ディレクトリを作成し、キャッシュファイルを生成します。
従って、app/tmp/ に Web サーバの書き込み権限が必要です。
ま、tmp なので 777 でOKかと。
# chmod 777 app/tmp
使用方法
通常は View::forge() であった箇所を View_Smarty::forge() とするだけです。
こんな感じですね。
return Response::forge(View_Smarty::forge('default/index'));
View::forge() と View_Smarty::forge() は両立しますので、必要であれば Smarty を使う/使わないの使い分けも可能です。
views 以下のファイルは Smarty の記述がそのまま使えますので、特に迷うことはないかと思います。
コメント