読者です 読者をやめる 読者になる 読者になる

Twigでエンティティオブジェクトにアクセスする際の注意点

Twigテンプレート内でエンティティオブジェクトにアクセスする際にforで回しながら処理したかったんですが、エラーが出て見事に少しハマった。
下記のようにtypesに入っている値を利用して、エンティティオブジェクトにアクセスするとエラーが出る。

{% for type in types %}
    {% set column = type ~ 'Status' %}
    {{ entity[column] }}
{% endfor %}

Twigのドキュメントを読んでみたところ、attribute関数というものを発見した。
http://twig.sensiolabs.org/doc/templates.html#variables

attribute関数を使って試してみるとうまくいった。

{% for type in types %}
    {% set column = type ~ 'Status' %}
    {{ attribute(entity, column) }}
{% endfor %}

なぜこれで動くのかは不明なのでattribute関数の中身を後で読んでみる。