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 の記述がそのまま使えますので、特に迷うことはないかと思います。
コメント