Help us understand the problem. What is going on with this article?

CodeIgniter4でTwigを使う(Composer利用)

CodeIgniter4でもtwigを使いたい

前の記事ではCI4にSmartyを組み込みましたが、近頃はTwigをテンプレートエンジンに採用しているケースも多いのではないでしょうか?
本記事ではCI4にTwigを利用する方法の解説です。

Twig for CodeIgniter4を導入する

CI4上でTwigを利用するには拙作、CodeIgniter4 for Twigを使うと手っ取り早いです。
CI4との統合は最低限の実装にとどめているので動作は軽いと思います。

例は「CodeIgniter4をインストール (Composer利用)」での導入を終えた流れでインストールをした場合です。

composerによるTwig for CodeIgniter4の導入
$ 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.twigCI4Twig.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の使い方について簡単に説明します。

kohenji01
主に中規模〜極小規模のBtoB/BtoCのWebシステムを作っています。 新規開発案件も募集中です。
http://www.sarah-sys.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away