FuelPHP 1.7でのTwigのセットアップ
Twigのインストール
ComposerからTwigをインストールします。
まず、composer.jsonに設定を追加します。ここでは、バージョンは「1.*」としてTwig 1.xの最新版を指定しています。
diff --git a/composer.json b/composer.json
index e1b21ea..2e8f6da 100644
--- a/composer.json
+++ b/composer.json
@@ -18,7 +18,8 @@
"require": {
"php": ">=5.3.3",
"monolog/monolog": "1.5.*",
- "fuelphp/upload": "2.0.1"
+ "fuelphp/upload": "2.0.1",
+ "twig/twig" : "1.*"
},
"suggest": {
"mustache/mustache": "Allow Mustache templating with the Parser package",
composerからインストールします。
$ php composer.phar update
config.phpでParserパッケージを有効にします。
diff --git a/fuel/app/config/config.php b/fuel/app/config/config.php
index 5993891..16840eb 100644
--- a/fuel/app/config/config.php
+++ b/fuel/app/config/config.php
@@ -257,7 +257,7 @@ return array(
/**************************************************************************/
/* Always Load */
/**************************************************************************/
- // 'always_load' => array(
+ 'always_load' => array(
/**
* These packages are loaded on Fuel's startup.
@@ -270,9 +270,10 @@ return array(
* array('auth' => PKGPATH.'auth/')
* );
*/
- // 'packages' => array(
+ 'packages' => array(
// //'orm',
- // ),
+ 'parser',
+ ),
/**
* These modules are always loaded on Fuel's startup. You can specify them
@@ -308,6 +309,6 @@ return array(
* If you don't want the lang in a group use null as groupname.
*/
// 'language' => array(),
- // ),
+ ),
);
テンプレートの拡張子の設定
FuelPHPでのテンプレートエンジンと対応する拡張子の設定は、fuel/packages/parser/config/parser.phpにあります。デフォルトは以下のようになっています。
'extensions' => array(
'php' => 'View',
'twig' => 'View_Twig',
'mthaml' => array('class' => 'View_HamlTwig', 'extension' => 'twig'),
'mustache' => 'View_Mustache',
'md' => 'View_Markdown',
'dwoo' => array('class' => 'View_Dwoo', 'extension' => 'tpl'),
'jade' => 'View_Jade',
'haml' => 'View_Haml',
'smarty' => 'View_Smarty',
'phptal' => 'View_Phptal',
),
'twig' => 'View_Twig'
となっているため、デフォルトでは拡張子twigのファイルがテンプレートとされます。
エスケープについて
FuelPHPでのTwigの設定は、fuel/packages/parser/config/parser.phpにあります。デフォルトは以下のようになっています。
// TWIG ( http://www.twig-project.org/documentation )
// ------------------------------------------------------------------------
'View_Twig' => array(
'auto_encode' => true,
'views_paths' => array(APPPATH.'views'),
'delimiters' => array(
'tag_block' => array('left' => '{%', 'right' => '%}'),
'tag_comment' => array('left' => '{#', 'right' => '#}'),
'tag_variable' => array('left' => '{{', 'right' => '}}'),
),
'environment' => array(
'debug' => false,
'charset' => 'utf-8',
'base_template_class' => 'Twig_Template',
'cache' => APPPATH.'cache'.DS.'twig'.DS,
'auto_reload' => true,
'strict_variables' => false,
'autoescape' => false,
'optimizations' => -1,
),
'extensions' => array(
'Twig_Fuel_Extension'
),
),
ここで、'auto_encode' => true
は、FuelPHPでの自動エスケープ(Viewに渡す時の自動エスケープ)が有効、'autoescape' => false
は、Twigでの自動エスケープが無効、という意味です。
デフォルトがTwigの標準とは異なりますので、注意してください。
テンプレートの指定方法
通常は、公式ドキュメントにあるように、拡張子twigを付けたファイル名を指定します。
Response::forge(View::forge('index.twig'));
以下のようにView_Twigオブジェクトを生成する方法もあります。
Response::forge(View_Twig::forge('index'));
Twigの拡張
Twigの拡張をFuelPHPで使う方法は、以下の記事が詳しいです。
Date: 2013/12/26