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】テンプレートタグ まとめ③ (条件分岐・ループ、関数)” にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です