EC-CUBEでよく利用する、Twigのテンプレートタグの備忘録です。
条件分岐・ループ
if 文
<!-- 構文:基本形 -->
{% if 条件 %}
trueの時に表示
{% endif %}
<!-- 構文:elseif -->
{% if 条件A %}
{% elseif 条件B %}
{% else %}
{% endif %}
具体例
<!-- 具体例:在庫があればボタンを表示 -->
{% if Product.stock_find %}
<div class="ec-productRole__btn">
<button type="submit" class="ec-blockBtn--action add-cart">
{{ 'カートに入れる'|trans }}
</button>
</div>
{% endif %}
<!-- 具体例:ログイン状況の判定 -->
{% if is_granted('ROLE_USER') %}
<p>ログイン中</p>
{% else %}
<p>ログアウト中</p>
{% endif %}
<!-- 具体例:在庫数によって出力するメッセージを変える -->
{% if product.stock > 10 %}
<p>販売中!</p>
{% elseif product.stock > 0 %}
<p>残り{{ product.stock }}点!</p>
{% else %}
<p>売り切れ</p>
{% endif %}
for 文
<!-- 構文:基本形 -->
{% for 変数 in 配列 %}
繰り返す内容
{% endfor %}
具体例
<!-- 具体例:商品一覧を出力 -->
<ul id="navigation">
{% for Product in Products %}
<li>{{ Product.name }}</li>
{% endfor %}
</ul>
関数
is defined 変数が定義されているか?
<!-- 構文 -->
{% if 変数 is defined %}
{% endif %}
<!-- 具体例:product.nameが定義されて"いれば"実行 -->
{% if product.name is defined %}
<p>商品名:{{ product.name }}</p>
{% endif %}
<!-- 具体例:product.nameが定義されて"いなければ"実行 -->
{% if product.name is not defined %}
<p>取扱がありません</p>
{% endif %}
is null 何も含まれないとき
<!-- 構文 -->
{% if 変数 is null %}
{% endif %}
<!-- 具体例:変数source に何も含まれないときの分岐 -->
{% if source is null %}
<p>ファイルを読み込めません</p>
{% else %}
{{ source|raw }}
{% endif %}
【参考】
Twig Documentation(ver.2) Filters
https://twig.symfony.com/doc/2.x/filters/index.html
2 件のコメントが “【EC-CUBE4】テンプレートタグ まとめ③ (条件分岐・ループ、関数)” にあります。