【问题标题】:Twig function for repeating template用于重复模板的 Twig 函数
【发布时间】:2017-12-07 20:03:26
【问题描述】:

我是 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>

【问题讨论】:

    标签: symfony twig templating


    【解决方案1】:

    你可以依赖宏,

    宏.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 %}
    

    模板.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

    【讨论】:

    • 非常感谢,我完全忘记了宏,并在文档中搜索了其他所有内容^^ 也很好地使用了 for 循环
    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多