FuelPHPでSmartyテンプレートを使用する方法(備忘録的なメモも兼ねていますよ) | 素粒子の世界で自由に生きる

素粒子の世界で自由に生きる

iphoneアプリのレビューをしていたんですが・・
だんだんandroidアプリ開発の話になってきました。。
さらに、素粒子の話になってきました笑
自分が読み返したくなるブログ記事を書いております♪
ほぼ自己満ですが、ぜひお楽しみください!

すっかりお久しぶりな更新です。
本業ではもっぱらPHPを触ることになっていて、Androidは研修で少し教えたりする程度になっています。
iPhoneアプリも開発できるようになったのでこれからはそちらも遣って行こうかなーと。

そして、今日はPHPのフレームワークである
FuelPHPについての設定メモです。
設定系は意外と忘れてしまうのと、解説をしてみた方が自分の理解が深まるので書いてみました。

なんだかごちゃごちゃと長くなったので、纏めたのを最初にのせておきます。

1. fuelphp,smartyをダウンロードしてfuel/app/vendor/Smarty/libsを作成する。
2. fuel/app/config/config.phpを編集してalways_loadにparserを加える。
3. fuel/app/views配下にsmartyテンプレートを作成する。
4. fuel/app/classes/controller配下のControllerへView_Smartyを使用して表示するテンプレートを指定する。



fuelphpの初期設定メモ
開発環境
Mac OSX 10..7.5
Eclipse php 3.7 Indigo
PHP Version 5.4.10
Apache 2.2.23
MAMP 2.1.2
ver FuelPHP 1.5.3 2013/3/14 最新
ver smarty  3.1.13 2013/3/14 最新

fuelphp
 解凍後、/publicへアクセスするとサンプルのwelcomeページが表示される。
 初期設定にてルートがwelcomeコントローラーへ設定されている。
 
 まずは、welcomeのままsmartyが使えるように設定する。
 /fuel/app/vendorへ/smarty-3.1.13/libsをコピーする。
 
 /fuel/app/config/config.phpの編集
 L249
  'always_load'  => array(
 L262-4
  'packages'  => array(
//'orm',
),
L300
),

上記コメントアウトを外す。
/fuel/app/config/config.phpにて初期設定がコメントアウトされているので、
コメントアウトを解除するだけで使えるようになるという便利さがある。
しかし、とじ括弧をコメントアウト解除し忘れるという罠に引っかかることが・・・

コメントアウトを解除したこちらの部分
  'packages'  => array(
//'orm',
),
これに、parserを追加します。
  'packages'  => array(
//'orm',
'parser',
),
今回は、ormは使用しないのでそのまま。
そのうちconfigをもう少し読み進めておく必要がありますが、今はまだ。。


とりあえず、config.phpの設定はここまででOK
次は拡張子の設定とテンプレートの作成・表示ですね。

まず、拡張子の設定。デフォルトが.smartyとなっているため慣れ親しんだ.tplへ変更します。
そのままでよい方は触らない方向で。

/fuel/packages/parser/classes/view/smarty.phpを編集します。
L42
  public $extension = 'smarty';
ここで拡張しがsmartyに設定されているため、tplへ変更します。
public $extension = 'tpl';
これで、tplファイルがsmartyテンプレートとして読み込まれるようになりました。

次はテンプレートの作成です。
fuelphpではfuel/app/views配下へ
コントローラー名のディレクトリを作成し、view用のファイルを追加していきます。
ってどのフレームワークも大体同じなのかな。
今回は、welcomeをそのまま使用しているため、下記へsmarty_test.tplを作成します。

fuel/app/views/welcome/smarty_test.tpl

中身はこれだけ。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>{$title}</title>
</head>
<body>
{$body}
</body>
</html>


受け取る変数は、$title, $body の二つですね。
では、このテンプレートを表示するためのロジックをController_Welcomeに追加します。
Controller_Welcomeは下記ですね。
/fuel/app/classes/controller/welcome.php

/**
* Smarty表示テスト
* Smartyへのパラメーターは連想配列で渡す
* 連想配列のkeyにてsmarty側で変数が取得できる
* @return \Fuel\Core\Response
*/
public function action_smartytest()
{
$data = array('title' => 'SmartyTest',
'body' => '本文');
return Response::forge(View_Smarty::forge('welcome/smarty_test', $data));
}
さて、上記をController_Welcomeへ追記したら、
/welcome/smartytest
へアクセスしてみてください。

私の場合は、MAMP環境にて開発を行っているため
http://localhost/welcome/smartytest
となります。
無事に、設定した$bodyが表示されていれば成功となります。

では、手順を簡単にまとめておきます。

1. fuelphp,smartyをダウンロードしてfuel/app/vendor/Smarty/libsを作成する。
2. fuel/app/config/config.phpを編集してalways_loadにparserを加える。
3. fuel/app/views配下にsmartyテンプレートを作成する。
4. fuel/app/classes/controller配下のControllerへView_Smartyを使用して表示するテンプレートを指定する。

たったのこれだけなんですが、意外とはまってしまいました。
備忘をかねてメモです。
誰かのお役に立てますように。。。