FuelPHP1.7.3のテンプレートエンジンにsmartyを設定

FuelPHP1.7.3でsmarty3系を使えるようにした。


## 1.composer.jsonの修正
requireの箇所にsmartyの記述を追記する。

```json:composer.json
"require": {
        "php": ">=5.3.3",
        "composer/installers": "~1.0",
        "fuel/docs": "dev-1.7/master",
        "fuel/core": "dev-1.7/master",
        "fuel/auth": "dev-1.7/master",
        "fuel/email": "dev-1.7/master",
        "fuel/oil": "dev-1.7/master",
        "fuel/orm": "dev-1.7/master",
        "fuel/parser": "dev-1.7/master",
        "fuelphp/upload": "2.0.2",
        "monolog/monolog": "1.5.*",
        "michelf/php-markdown": "1.4.0",
        "smarty/smarty": "3.*"
    },
```

## 2.composerの依存ライブラリをupdate
composer.jsonの修正を反映させる。

```
$ php composer.phar update
```

## 3.Parserパッケージを有効にする
fuel/app/config/config.phpを修正する。（always_loadの箇所）

```php:config.php
	/**************************************************************************/
	/* Always Load                                                            */
	/**************************************************************************/
	'always_load'  => array(

		/**
		 * These packages are loaded on Fuel's startup.
		 * You can specify them in the following manner:
		 *
		 * array('auth'); // This will assume the packages are in PKGPATH
		 *
		 * // Use this format to specify the path to the package explicitly
		 * array(
		 *     array('auth'	=> PKGPATH.'auth/')
		 * );
		 */
		 'packages'  => array(
		 	//'orm',
		 	'parser',
		 ),
```

## 4.parser.phpの修正
fuel/packages/parser/config/parser.phpを修正する。
`View_Smarty`に`include`のKEYを追記する。

```php:parser.php
// SMARTY ( http://www.smarty.net/documentation )
	// ------------------------------------------------------------------------
	'View_Smarty' => array(
        'include' => APPPATH.'vendor'.DS.'smarty'.DS.'libs'.DS.'Smarty.class.php',
		'auto_encode' => true,
		'delimiters'  => array('left' => '{', 'right' => '}'),
		'environment' => array(
			'compile_dir'       => APPPATH.'tmp'.DS.'Smarty'.DS.'templates_c'.DS,
			'config_dir'        => APPPATH.'tmp'.DS.'Smarty'.DS.'configs'.DS,
			'cache_dir'         => APPPATH.'cache'.DS.'Smarty'.DS,
			'plugins_dir'       => array(),
			'caching'           => false,
			'cache_lifetime'    => 0,
			'force_compile'     => false,
			'compile_check'     => true,
			'debugging'         => false,
			'autoload_filters'  => array(),
			'default_modifiers' => array(),
		),
	),

```

## 5.templates_cなどのフォルダ作成
smartyでコンパイル後のファイルを格納するフォルダなど3つ作成。
3つともパーミッションは`777`に。

`fuel/app/tmp/Smarty/configs`
`fuel/app/tmp/Smarty/templates_c`
`fuel/app/cache/Smarty`

## 6.コントローラからビューの呼び出し例

controller

```php:fuel/app/classes/controller/welcome.php
/**
	 * The test action for the application.
	 *
	 * @access  public
	 * @return  Response
	 */
	public function action_test()
	{
        $t_params = array(
            'message' => 'smarty template テスト'
        );
        $view = View::forge('welcome/test.html');
        $view->title = 'テスト！';
        $view->username = '太郎';
        return $view;
	}

```
template

```html:fuel/app/views/welcome/test.html
test.html
{$title}{$username}

```


## 7.表示
Compile Error!

エラーです。
以下の対応をしたら直りました。

## view.phpの修正
fuel/packages/parser/classes/view.phpを修正する。
正しい対応かはわからないが、38行目,89行目の`require $include;`をコメントアウトする。
これで動くようになった。

## 参考
[FuelPHP 1.7でのSmartyのセットアップ](http://blog.a-way-out.net/blog/2014/01/22/fuelphp-smarty/)
[Fuelphp : class ‘smarty’ not found](http://ever-free.jp/php/fuelphp-class-smarty-not-found/)
[FuelPHPのコントローラからビューへ変数を渡す](http://runble1.com/fuelphp-view-access/)