#CodeIgniter4でもtwigを使いたい
前の記事ではCI4にSmartyを組み込みましたが、近頃はTwigをテンプレートエンジンに採用しているケースも多いのではないでしょうか?
本記事ではCI4にTwigを利用する方法の解説です。
#Twig for CodeIgniter4を導入する
CI4上でTwigを利用するには拙作、CodeIgniter4 for Twigを使うと手っ取り早いです。
CI4との統合は最低限の実装にとどめているので動作は軽いと思います。
例は「CodeIgniter4をインストール (Composer利用)」での導入を終えた流れでインストールをした場合です。
$ cd /home/ci4test
$ composer require sarah-systems/ci4twig
以下は、概ねREADME.mdからの抜粋です。
#使い方
デフォルトでは、Twig関連のパスは自体は次のような設定で動作するようになっています。
種類 | パス |
---|---|
テンプレート | app/Views |
キャッシュ | writable/twig/cache |
writable
が正しく書き込み可能な場合、キャッシュディレクトリは自動的に生成されます。
もしエラーが起きた場合は、これらのディレクトリを作って適切なパーミッションを与えることで動作します。
もしこのパスを変更したい場合は.env
ファイルに次のパラメータをセットすることで、任意のパスに変更可能です。
CI4Twig.TemplateDir = /path/to/TemplateDir
CI4Twig.CacheDir = /path/to/CacheDir
これ以外にも.env
では、TwigのDebugフラグのOn/Offとデフォルトの拡張子を設定できます。
CI4Twig.Debug = 1 または 0
CI4Twig.DefaultTemplateExtension = .html.twig
#view()
CI4のview関数をTwig用にCI4Twigというnamespaceで定義しています。
利用する際はapp
ディレクトリ直下のCommon.php
に次を追記してください。
require_once ROOTPATH . "vendor/sarah-systems/ci4twig/src/Common.php";
使用法はCI4のview関数と同じですが、関数の利用時には名前空間を指定するか、事前にエイリアスを張ってください。
\CI4Twig\view('template.html.twig');
または
use function CI4Twig\view as view;
view('template.html.twig');
拡張子.html.twig
(CI4Twig.DefaultTemplateExtension
で設定されたものです。無指定の場合は.html.twig
)は省略可能です。
\CI4Twig\view('template');
view関数の第2パラメータはTwig変数$CI
にアサインされます。
$data = [ 'apple' , 'banana' , 'lemon' ];
\CI4Twig\view('template',$data);
Twigのtemplate上では
{{ CI.0 }} ← appleが表示されます。
第3引数の$optionsは無視されます。
#Service
CI4のServiceが利用可能です。
use CI4Twig\Config\Services;
$time = date('Y-m-d H:i:s');
$twig = Services::twig();
$twig->Environment->addGlobal('time',$time);
$twig->Environment->display('template.html.twig');
次回はCI4のValidationの使い方について簡単に説明します。