
今回はテンプレートエンジンTwigを利用することで、ViewからPHPプログラムを完全排除します。
残念ながら私は毎日業務でプログラムを書いているわけではないので、色々やっているうちに忘れてしまう危険があります・・・!!そんなわけで、プログラム系もぼちぼち記事にしていこうと思います。
もくじ
FuelPHP関連記事
MVCの役割

第3回まで行ってきました。
ここでこれまで作ったViewを見てみます。
# cat /var/www/html/app/fuel/app/views/youkai/watch_chi.twig
<?php
        foreach($youkai as $row)
        {
                        echo "{$row['name']}『{$row['nakigoe']}』";
                        echo "<hr/>";
        }
Viewにプログラムが入ったままです…。
Viewは表示だけに集中すべきです。ですので、MVCの観点からViewからプログラムのロジックを排除していきます。
今回はテンプレートエンジンTwigを導入することで、ViewからPHPを排除します。
# vi /var/www/html/app/composer.json
7行目付近
    "require": {
        "php": ">=5.3.3",
        "composer/installers": "~1.0",
        "fuel/core": "1.8.*",
        "fuel/auth": "1.8.*",
        "fuel/email": "1.8.*",
        "fuel/oil": "1.8.*",
        "fuel/orm": "1.8.*",
        "fuel/parser": "1.8.*",
        "fuelphp/upload": "2.0.6",
        "monolog/monolog": "1.18.*",
        "phpseclib/phpseclib": "2.0.0",
        "michelf/php-markdown": "1.4.0"
    },
↓変更
    "require": {
        "php": ">=5.3.3",
        "composer/installers": "~1.0",
        "fuel/core": "1.8.*",
        "fuel/auth": "1.8.*",
        "fuel/email": "1.8.*",
        "fuel/oil": "1.8.*",
        "fuel/orm": "1.8.*",
        "fuel/parser": "1.8.*",
        "fuelphp/upload": "2.0.6",
        "monolog/monolog": "1.18.*",
        "phpseclib/phpseclib": "2.0.0",
        "michelf/php-markdown": "1.4.0", ←変更
        "twig/twig": "1.*" ←追加
    },
上記設定で1系の最新がインストールされます。
Twigのインストール
# cd /var/www/html/app/
# php composer.phar update Warning: This development build of composer is over 60 days old. It is recommended to update it by running "composer.phar self-update" to get the latest version. Loading composer repositories with package information Updating dependencies (including require-dev) - Installing twig/twig (v1.34.4) Downloading: 100% Writing lock file Generating autoload files
エラーがでています。
Warning: This development build of composer is over 60 days old. It is recommended to update it by running "composer.phar self-update" to get the latest version. Loading composer repositories with package information
もう一度実行
# php composer.phar self-update
Updating to version 1.5.2.
    Downloading: 100%
Use composer self-update --rollback to return to version 40c14709f79f9d7ea35ac969cfbd7f41beb525bb
FuelPHPの設定を修正しましょう!
config.phpを修正しましょう。
# vi /var/www/html/app/fuel/app/config/config.php
275行目付近
         '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',
                        'auth',
                        'parser', ←追加
                 ),
parserを追加しました。
ControllerのViewの記述を変更
Controllerを修正します。View::forgeをView_twig::forgeに変更する必要があります。
# vi /var/www/html/app/fuel/app/classes/controller/youkai.php
<?php
use \Model\Watch;
class Controller_Youkai extends Controller {
        public function action_index() {
                return View::forge('youkai/index');
        }
        public function action_watch_chi() {
                $data['youkai'] = Watch::get_youkai();
                return View::forge('youkai/watch_chi', $data);
        }
}
↓変更
<?php
use \Model\Watch;
class Controller_Youkai extends Controller {
        public function action_index() {
                return View::forge('youkai/index');
        }
        public function action_watch_chi() {
                $data['youkai'] = Watch::get_youkai();
                return View_twig::forge('youkai/watch_chi', $data); ←変更
        }
}
Viewファイルを変更します。
一応複製しておきましょうか。
# cp /var/www/html/app/fuel/app/views/youkai/watch_chi.php /var/www/html/app/fuel/app/views/youkai/watch_chi.twig
Twig形式に記述を変更します。
# vi /var/www/html/app/fuel/app/views/youkai/watch_chi.twig
<?php
        foreach($youkai as $row)
        {
                        echo "{$row['name']}『{$row['nakigoe']}』";
                        echo "<hr/>";
        }
↓変更
{% for row in youkai %}
    {{ row.name }}『{{ row.nakigoe }}』
    <hr/>
{% endfor %}
アクセスして確認しましょう。

http://IPアドレス/youkai/watch_chi
これで無事にViewからPHPのロジックを排除することに成功。デザイナーさんも気軽に触れる環境になりました。
お疲れ様です。
 





