はじめに
EC-CUBE2では「Smarty」というテンプレートエンジンが採用されていますが、EC-CUBE3ではテンプレートエンジンとして「twig」が採用されています。
Smarty マニュアル | Smarty
Smarty is a template engine for PHP.
Home - Twig - The flexible, fast, and secure PHP template engine
Twig - The flexible, fast, and secure template engine for PHP
twigとは、PHPフレームワークであるSymfonyにバンドルされているテンプレートエンジンです。EC-CUBE3ではこのtwigを編集することで、サイトの構造を編集することができます。
twigには繰り返し処理をする場合「for」文しかない?
結論から言うと、繰り返し処理を行いたい場合すべて「for」文を使わなければいけません。
symfonyのコントローラー側で「foreach」文を使って配列の中身を取り出すといった作業をしている方にとって、twigでもできたらなと感じる方も多いのではないでしょうか?
今回は、twigで「foreach」文と同等の処理を実現する方法をご紹介します。
前提
下記の配列構造から、繰り返し処理でチーム名のみ出力していきます。
下記の配列は「SKE48」という変数に格納されているとしましょう。
array:4 [
0 => CustomerItemOption
-id: 1
-customer_item_id: 1
-text: "チームS"
-rank: 1
}
1 => CustomerItemOption
-id: 2
-customer_item_id: 1
-text: "チームK2"
-rank: 2
}
2 => CustomerItemOption
-id: 3
-customer_item_id: 1
-text: "チームE"
-rank: 3
}
3 => CustomerItemOption
-id: 4
-customer_item_id: 1
-text: "チーム研究生"
-rank: 4
}
]
書き方
以下のように記述します。
{% for value in SKE48 %} {{ attribute( value, 'text' ) }} {% endfor %}
出力結果
チームS チームK2 チームE チーム研究生
これで、SKE48という変数内の配列を繰り返し処理して出力することができます。
ちなみにattributeは、配列内の特定のデータを抽出して表示したい場合に指定します。
attribute - Documentation - Twig - The flexible, fast, and secure PHP template engine
Twig - The flexible, fast, and secure template engine for PHP