FORSMILE
EN
Twig2021/01/20

[Twig]変数・配列を定義する方法(set)と変数の表示

以前Smartyの記事を書きましたがPHPのテンプレートエンジンとして他によく使うものとしてTwigがあります。

ブログ一覧へ / Back to Blog

以前Smartyの記事を書きましたがPHPのテンプレートエンジンとして他によく使うものとしてTwigがあります。

プロジェクトでSymfonyを使っていることもあり、「変数」に関して頻繁に調べるものに関してこちらにまとめてみました。

Twigで変数を定義する方法

Twigのテンプレート内で変数を定義するにはsetを使用します。

基本

css
{% set foo = 'bar' %}
css
{# displays bar #}
{{ foo }}

複数まとめて定義する

css
{% set foo, bar = 'test', 'text' %}

{# display testtext #}
{{ foo }}{{ bar}}

Twigで配列を定義する方法

基本

css
{% set foo = [10, 20] %}

{# display 10 #}
{{ foo.0 }}
{{ foo[0] }}

Keyを命名して配列を定義

css
{# keys as string #}
{% set bar = {'a': 'test','b': 'text'} %}

{# display text #}
{{ bar.b }}

{# keys as names#}
{% set bar = {a: 'test',b: 'text'} %}

変数を組み合わせて定義する

変数をsetで定義する際に、値やKeyに変数を使用することもできます。

javascript
{# 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の使い方サンプル

変数と変数を結合(文字列と変数など)

css
{% set foo = 'a' %}
{% set bar = 'b' %}
{% set test = foo ~ bar %}

{# display ab #}
{{ test }}


{% set baz = 'foo' ~ 'bar' %}

{# display foobar #}
{{ baz }}

変数がfalseの場合のデフォルト値を設定する

css
{% set test = foo ?? 'default' %}

{# display default if foo is false #}
{{ test }}

配列を別の配列に追加する(マージする)

PHP等ではおなじみですが、Twigテンプレート側でも可能です。

css
{% set values = [1, 2] %}
{% set values = values|merge(['apple', 'orange']) %}

{# values now contains [1, 2, 'apple', 'orange'] #}

htmlのタグなど複数行を定義したい

css
{% set foo %}
    <div>
        test
    </div>
{% endset %}

作業を通じて便利だなと感じた使い方がでてきましたらまた追加していきたいと思います。

Twigおすすめの書籍

Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。

📦
Amazon で関連書籍・ツールを検索
PHP テンプレート Twig
Amazonで探す →(アソシエイトリンク)