FuelPHP 1.7でのTwigのセットアップ post

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

Tags: fuelphp, twig