10
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CodeIgniter 3とtwigを連携させ継承して使う

Posted at

ぐぐっても情報が少なかったので書いておきます。

#CodeIgniterにtwigテンプレートエンジン連携
##環境
・Composer
・PHP7.0.2
・CodeIgniter3.0.6
・twig1.24.0

##連携手順
applicationディレクトリ内にcomposer.jsonをまずは作成します。

vi cd application/composer.json

内容は

composer.json
{
    "require": {
        "twig/twig" : "1.*"
    }
}

そしたら、Twigのインストールで

cd application
composer install

これでapplication/vendorディレクトリが作成されその中にautoload.phpとtwig本体が入るかと思います。

WS000005.JPG

vendor/autoload.phpを読み込ませるためにapplication/config/を変更します。

vi application/config/config.php

でコメントアウトされてない方の

変更前
$config['composer_autoload'] = FALSE;

変更後
$config['composer_autoload'] = TRUE;

に変更します。これでtwigが連携されました。

CodeIgniter 3でTwigテンプレートエンジンを使用する
こちらの記事のようにこのままcontrollerに毎回twigの宣言を書いても使えるのですが、毎回書くのも面倒ですよね?そこで本体CI_Controllerのコンストラクタにして毎回読み込まれるようにします。

##CI_Controllerの継承先MY_Controller作成

CI_Controllerを弄るのはあまり良くないので継承先で記述を追加していきます。
CI_Controllerを継承する時はMY_Controllerという名前にしないと使用できないようです。

まずはapplication/coreにMY_Controller.phpを作成します。

vi application/core/MY_Controller.php

内容を

MY_Controller.php
<?php
class MY_Controller extends CI_Controller {
	protected $twig;

    public function __construct()
    {
    	parent::__construct();
        //テンプレートを配置しているフォルダを指定
        //今回はapplication/views
        $loader = new Twig_Loader_Filesystem('application/views');
        //オプションを指定して、twigインスタンス生成
        $this->twig = new Twig_Environment($loader, array('cache' => APPPATH.'/cache/twig', 'debug' => true));
    }
}

##コントローラ作成
先ほどの継承先を使います。
コントローラを作ってみましょう。

コントローラ作成します。

vi application/controllers/Sample.php

内容を

Sample.php
<?php
class Sample extends MY_Controller {
	public function index() {
        //テンプレート読み込み先指定
        $template = $this->twig->loadTemplate('Sample.html');       

        $view_data = array('test_value' => '日本語でこんにちは');
        $this->output->set_output($template->render($view_data));
	}
}

テンプレート先も作成します。

vi application/controllers/Sample.html

内容は

Sample.html
<p>{{ test_value }}</p>

これでいい感じにtwigを使えるようになりました。

10
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?