EC-CUBE3案件で久しぶりにTwigを触ってハマったところがあったのでメモ。

以下のような配列(オブジェクト)に対し、キーに変数を指定して任意の要素にアクセスする。

上の例はEC-CUBE3の規格商品オブジェクトだが、最終的に「9 => #17」の「product_code」の値を取得する。

まず、1次元目の要素にアクセスする場合、Twigのattribute関数を使用する。
第一引数にオブジェクトを、第二引数にキーとなる変数を指定すれば良い。

{% set param_class1 = 9 %}
{{ attribute(Product.class_categories, param_class1) }}

2次元目の要素にアクセスする場合は、入れ子にしてあげれば良い。
※もっとスマートな方法があれば教えてもらいたい。。。

product_codeを取得する場合は以下のとおりとなる。

{% set param_class2 = 17 %}
{{ attribute(attribute(Product.class_categories, param_class1), '#'~param_class2).product_code }}