ぐぐっても情報が少なかったので書いておきます。
#CodeIgniterにtwigテンプレートエンジン連携
##環境
・Composer
・PHP7.0.2
・CodeIgniter3.0.6
・twig1.24.0
##連携手順
applicationディレクトリ内にcomposer.jsonをまずは作成します。
vi cd application/composer.json
内容は
{
"require": {
"twig/twig" : "1.*"
}
}
そしたら、Twigのインストールで
cd application
composer install
これでapplication/vendorディレクトリが作成されその中にautoload.phpとtwig本体が入るかと思います。
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
内容を
<?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
内容を
<?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
内容は
<p>{{ test_value }}</p>
これでいい感じにtwigを使えるようになりました。