Twig
PHPのテンプレートエンジン
Twigのテンプレート分割
Twig メモ
2種類のデリミタ
{{...}}
表示や操作の結果
{% ... %}
分岐forループなど
with Symfonyの場合
関数が拡張されている
https://symfony.com/doc/3.4/reference/twig_reference.html
例えばassets()とかはsymfonyに依るもの
SymfonyのFormで使うform_start()なども
dumpできる
{{ dump() }}
private propertyにアクセスするとgetterを見る
https://twig.symfony.com/doc/2.x/templates.html#variables
{{hoge.piyo}}と書いた時、
piyoがprivate propertyであってもアクセスしうる
なぜなら、getPiyo()を探してあればそれを使っているから
ヤバいな..mrsekut.icon
getterの本来の存在意義とズレるだろ...
利用者にとってもこのルールを知らないと誤解を招くだろうし
filter
pipeで連鎖的に書くことができる
使用できる関数はTwigが用意しているもの
https://twig.symfony.com/doc/3.x/filters/index.html
https://microengine.jp/cms/manual/2.0/twig_filter.html
PHPとは関係ない
PHPの呪いがかかってなくて良いなmrsekut.icon
code:twig
{{ 変数 | length }} //文字数
{% if users|length > 10 %}
自作できる?
https://wolfbash.hateblo.jp/entry/2018/02/15/144651
map
PHP Object ArrayをJS Object Arrayに変換する
code:twig
{% set jos = POs|map(c => {'a': p.a, 'b': p.b })|json_encode %}
// js
console.log(JSON.parse({{jos|json_encode|raw}}))
ゴミすぎる 
propertyアクセス
https://stackoverflow.com/a/15277822
get系のmethodは「get」を省略できる
code:twig
{{ menu.getHTML('first-string', 'second-string', 'tab1', 'tab2') }}
// 同じ
{{ menu.HTML('first-string', 'second-string', 'tab1', 'tab2') }}
逆に紛らわしくないか..?
3文字の省略にどれほどの価値があるのか謎だな
Twig側でmethodを実行するのはあまりよくない?
うえの質問見る限り別に問題なさそうだな
動くのは動くがsyntax highlightが効かないので、想定されているものではないかな、という判断をした
twigのstriptags
strip tags
SGML/XMLタグを取り除く
隣接する空白を1つの空白に変える
{{ some_html|striptags }}
引数を指定した場合、指定したタグは取り除かない
some_html|striptags('<br><p>')
https://twig.symfony.com/doc/3.x/filters/striptags.html
twigのescapeやtwigのrawの逆版みたいな
クソ適当に書いているmrsekut.icon
for
elseってなに
空配列の時に別表示ができる ref
loop.index
loopのindexを取れる
これ2重for文だったらどうなるの #??
https://tomcky.hatenadiary.jp/entry/2018/02/08/010639
loop.parent.loop.indexとやるらしい
非安全すぎないか
componentに分割した上でやるとめちゃくちゃ死にそう
loop系の変数できるだけ使いたくないなmrsekut.icon
aタグ関係
routing.txtに名前とpath一覧が書かれている
url()
https://annai.co.jp/drupal/theming-drupal-8/functions-in-twig-templates#toc--url-name-parameters-options-
link()
ルート名とパラメータを指定して、絶対 URLを生成
https://annai.co.jp/drupal/theming-drupal-8/functions-in-twig-templates#toc--link-text-url-attributes-
path()
ルート名とパラメータを指定して、相対 URL パスを生成
いつ使うん
https://annai.co.jp/drupal/theming-drupal-8/functions-in-twig-templates#toc--path-name-parameters-options-
Twig Extension
TwigFilter
関数を自作できる
https://symfony.com/doc/current/templating/twig_extension.html
https://twig.symfony.com/doc/2.x/advanced.html
参考
PHPでWebアプリ開発!人気テンプレートエンジン「Twig」を使ってみよう - WPJ