Edited at

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

More than 3 years have passed since last update.

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


1.composer.jsonの修正

requireの箇所にsmartyの記述を追記する。


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の箇所)


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_SmartyincludeのKEYを追記する。


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


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


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のセットアップ

Fuelphp : class ‘smarty’ not found

FuelPHPのコントローラからビューへ変数を渡す