2017-07-04 3 views
1

私はTwigを初めて使い、最近プロジェクトを開始しました。この中で私は非常に頻繁にスターレーティングディスプレイを使用しています。表示するレーティングやサイズなど、いくつかの値も必要です。だけで、何かをパラメータを受け取り、目的のテンプレートを返す関数にこれを削減するためのオプションがあるかどうテンプレートを繰り返すための枝機能

現在、私はいつも、私が思っていた仕事をしていませんどこでも

<div class="ratingarea"> 
    {% include 'Artist:rating.html.twig' 
    with {'rating': artist.rating, 'size': 'medium' } %} 
</div> 

、使用していますが、このように:

<div class="ratingarea"> {% rating(2.8, 'medium') %} </div> 

これは可能ですか?これを改善する別の方法ですか?

これはテンプレートです:、あなたがマクロのに頼ることができる

<span> 
    <div class="review-rating"> 
    <div class="rating {{size}}-rating"> 
     <div class="stars stars-fontawesome-o top-art"> 
     <select class="list-rating fontawesome-o " 
       data-current-rating="{{rating}}"> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
     </select> 
     </div> 
    </div> 
    </div> 
</span> 

答えて

2

macro.twig

{% macro rating(rating, size) %} 
<span> 
    <div class="review-rating"> 
    <div class="rating {{size}}-rating"> 
     <div class="stars stars-fontawesome-o top-art"> 
     <select class="list-rating fontawesome-o " data-current-rating="{{rating}}"> 
      {% for i in 1..5 %} 
      <option value="{{ i }}">{{ i }}</option> 
      {% endfor %} 
     </select> 
     </div> 
    </div> 
    </div> 
</span> 
{% endmacro %} 

template.twig

{# import the macro's in the file "macro.twig" as the namespace `macro` #} 
{% import "macro.twig" as macro %} 
{{ macro.rating(2.5, 'medium') }} 

twigfiddle

+0

は、私は完全にマクロを忘れてしまったとするループの素敵な使用も^^ドキュメントに他のすべての検索、どうもありがとうございました – TechTreeDev

関連する問題