「あんちょこ」って大分と古くてあんまり使われてない単語なんだなぁ……というあさってな方向からの感想を述べつつ。
単置換
一番の基本だよねぇ。いわゆる「この変数を出力」ってやつ。
{{ variable }}
配列は.(ドット)でつなげる感じ。
{{ array.key }}
フィルタ
いろいろなフィルタがあって、割と便利。
{{ variable|filter }}
filterは、 https://twig.symfony.com/doc/2.x/ とかみるとわかるですが、なんか結構山盛り。
いくつかかいつまんで、使いそうかなぁ、って思えるものを中心にいくつか。
HTMLエスケープ。ただ、単置換でも普通にエスケープしてくれるからなぁ。
「js用のエスケープ」は、もしかしたら、便利、かも。
{{ variable|escape }} {{ variable|e }} {{ variable|escape('js') }} {{ variable|e('js') }}
小文字になぁれ、大文字になぁれ
{{ variable|lower }} {{ variable|upper }}
「改行をタグに」
{{ variable|nl2br }}
数値のフォーマット変更各種。PHPのnumber_format()関数と一緒
{{ variable|number_format }}
エスケープ無し。気を付けて使わないと危ないけど、とはいえ「必要な時は(稀に)あるよねぇ」というフィルタ。
{{ variable|raw }}
URLエスケープ
{{ variable|url_encode }}
コメント
コメントはこんな風に。
{# コメント #}
ある程度書いておいたほうが、後々、楽だよねぇ。
条件分岐
いわゆる if 文。
{% if variable == 'hoge' %} HTML {% elseif variable == 'bar' %} HTML {% else %} HTML {% endif %}
「厳密な比較( === )」をしたい時に、===と書くとエラーになるので、そゆときは is same as() を使います。
{% if variable is same as('hoge') %} HTML {% else %} HTML {% endif %}
演算子は、andとかorとかを使いましょう。
{% if 18 < variable and variable < 21 %} HTML {% else %} HTML {% endif %}
あと、変数が「あるかないか」とか配列が「あるかないか」とか配列の個数とか、その辺は「length」のフィルタ使ってチェックします。
{% if variable|length %}
とか
{% if array|length %}
とか。これは「戻り値が0なら、空文字(空配列)か存在しない変数のどちらかだからfalseになるよねぇ」って感じで使います。
反復
いわゆる「PHPのforeach」は、こんな風に。
{% for key, variable in array %} {{ key}}の値は{{ variable }}<br> {% endfor %} {% for variable in array %} 値は{{ variable }}<br> {% endfor %}
「for文で数値の反復」は、rangeを使います。
{% for i in range(0, 10) %} {{ i }} {% endfor %}
また、ループでは「特別な変数」があって、それを使うと色々なことが出来ます。
loop.index ループ数 1スタート(1 2 3 4 ... loop.index0 ループ数 0からスタート(0 1 2 3 ... loop.first 最初のアイテムならtrue loop.last 最後のアイテムならtrue
変数の設定
あんまり使わん気もするが……どうしても「テンプレート内で変数を定義したい」場合は、こんな風に。
{% set variable = 'hogeramugera' %}
テンプレートの継承
{% extends 'layout.twig' %}
って書いておくと、継承してくれます。
あとは。継承元のファイルで
{% block XXXXXX %}{% endblock %}
って書いておいて、継承先のファイルで
{% block XXXXXX %}これを出力{% endblock %}
とかってやると変換してくれるので。
よくやるのが、headのtitleとかを
{% block title %}{% endblock %}
で宣言して継承先で
{% block title %}ほにゃららページ{% endblock %}
とかって使ったりします。
includeもあるんだけど、あんまり使わないなぁ。
使いたいときは
{% include "parts/include.twig" %}
とかって書式で。
大体、これくらいかなぁ。
過不足あったら、適宜修正していきまふ。