以前Smartyの記事を書きましたがPHPのテンプレートエンジンとして他によく使うものとしてTwigがあります。
プロジェクトでSymfonyを使っていることもあり、「変数」に関して頻繁に調べるものに関してこちらにまとめてみました。
Twigで変数を定義する方法
Twigのテンプレート内で変数を定義するにはsetを使用します。
基本
{% set foo = 'bar' %}
変数表示
{# displays bar #}
{{ foo }}
変数の定義・使い方の基礎はとってもシンプルです。
複数まとめて定義する
{% set foo, bar = 'test', 'text' %}
{# display testtext #}
{{ foo }}{{ bar}}
Twigで配列を定義する方法
setを使用して配列を定義することもできます。
基本
{% set foo = [10, 20] %}
{# display 10 #}
{{ foo.0 }}
{{ foo[0] }}
Keyを命名して配列を定義
{# keys as string #}
{% set bar = {'a': 'test','b': 'text'} %}
{# display text #}
{{ bar.b }}
{# keys as names#}
{% set bar = {a: 'test',b: 'text'} %}
変数を組み合わせて定義する
変数をsetで定義する際に、値やKeyに変数を使用することもできます。
{# set foo variable #}
{% set foo = 'a' %}
{# value as variable #}
{% set test = foo %}
{# display a #}
{{ test }}
{# keys as expressions #}
{% set bar = { (foo): 'foo', (1 + 1): 'bar', (foo ~ 'b'): 'baz' } %}
{# display foo bar baz #}
{{ bar.a }}
{{ bar.2 }}
{{ bar.ab }}
上記例からわかる通り、変数やKEYに式を使用することも可能です。変数と変数をくっつけたりできるので便利です。
Setの使い方サンプル
実際によく使うケースのサンプルです。
変数と変数を結合(文字列と変数など)
{% set foo = 'a' %}
{% set bar = 'b' %}
{% set test = foo ~ bar %}
{# display ab #}
{{ test }}
{% set baz = 'foo' ~ 'bar' %}
{# display foobar #}
{{ baz }}
変数がfalseの場合のデフォルト値を設定する
{% set test = foo ?? 'default' %}
{# display default if foo is false #}
{{ test }}
配列を別の配列に追加する(マージする)
PHP等ではおなじみですが、Twigテンプレート側でも可能です。
{% set values = [1, 2] %}
{% set values = values|merge(['apple', 'orange']) %}
{# values now contains [1, 2, 'apple', 'orange'] #}
htmlのタグなど複数行を定義したい
{% set foo %}
<div>
test
</div>
{% endset %}
上記は複数行まとめて定義したい場合に便利です。
作業を通じて便利だなと感じた使い方がでてきましたらまた追加していきたいと思います。
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
これと同じくらいブログでまとめられたらと思います。
[…] [TWIG]変数・配列を定義する方法(SET)と変数の表示 […]