PHP

FuelPHP Twig テンプレートエンジン導入

FuelPHP
今回はテンプレートエンジンTwigを利用することで、ViewからPHPプログラムを完全排除します。

 

残念ながら私は毎日業務でプログラムを書いているわけではないので、色々やっているうちに忘れてしまう危険があります・・・!!そんなわけで、プログラム系もぼちぼち記事にしていこうと思います。

 

FuelPHP関連記事

  1. FuelPHP のインストール
  2. FuelPHPでMVC
  3. FuelPHPでScaffolding MySQLの利用
  4. FuelPHP Twig テンプレートエンジン導入

 

 

MVCの役割

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 %}

 

 

 

アクセスして確認しましょう。

FuelPHP

http://IPアドレス/youkai/watch_chi

 

これで無事にViewからPHPのロジックを排除することに成功。デザイナーさんも気軽に触れる環境になりました。

 

お疲れ様です。
 

 

 

 

 

 

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)