SmartyにかわるテンプレートエンジンとしてTwig(ツィッグ)を勉強中。
といってもテンプレートエンジンなので基本的なことはほとんど一緒っぽいですが。
インストール
composer.jsonに下記のように書いてcomposer update(or install)です。
1 2 3 4 5 |
{ "require":{ "twig/twig":"~1.0" } } |
コード(PHP内)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$loader = new Twig_Loader_Filesystem('テンプレートディレクトリのパス'); $twig = new Twig_Environment($loader, [ 'cache' => ’キャッシュディレクトリのパス’, ]); ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ $context = []; //変数の格納 $context['key1'] = $var1; $context['key2'] = $var2; //テンプレート選択 $template = $twig->loadTemplate(テンプレートファイル); //変数のセット $template->display($context); |
基本的なルール
超基礎的なもののみ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
変数・配列・定数 変数は{{var}}のようにして出力。 配列は{{arr.index}} 定数は{{constant('定数名')}}で出力できる。 条件分岐 {% if %}, {% elseif %}, {% else %}で、必ず{% endif %}とペアで利用する。 ifは2重イコールしかないので要注意。 ループ PHPの場合 foreach $arr as $key => $value { } これに相当するtwigのforeachは {% for key, val in arr %} {{key}} {{val}} {% endfor %} 別ファイルの読み込み {% include 'sample.html.twig' %} |
注意ポイント
- htmlエスケープを自動でやってくれるので、忘れる心配がない
- \nを<br>改行はnl2brで出力できる
- PHPの関数は主なものは網羅されているっぽい
- プルダウンやラジオ、チェックボックスを変数を各変数を与えれば一行でかけるみたいな表記法はないっぽい
(Smartyではこれがあるのでめんどくさい条件分岐やループを書かなくていい。個人的にこれが結構こだわったんだけど、Twigにはないっぽい。プログラム側で書けばいけるらしい。)