我有几个"小部件"我以Symfony形式使用。这些是datepicker字段,colorpicker字段,花式组合框等。我将每个模板保存在单独的Twig文件中,如下所示:
# start of color_widget.html.twig
{% block color_widget %}
<div id="{{ id }}" class="input-group colorpicker-component">
<span class="input-group-addon"><i></i></span>
<input type="text" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %} class="form-control" />
</div>
<script>
$(function() {
$('#{{ id }}').colorpicker();
});
</script>
{% endblock %}
# end of color_widget.html.twig
现在,在当前设置中,我应该将所有块保留在一个大模板中。但我想制作一个循环来包含这些单独文件中定义的块。本质上,我试图用这个代替:
{% use "@CoreWidgets/color/widget.html.twig" %}
{% use "@CoreWidgets/date_picker/widget.html.twig" %}
{% use "@OtherWidget/widget.html.twig" %}
有这样的事情:
{% for widget in _widgets %}
{% use widget.path %}
{% endfor %}
但由于使用标签不支持变量,因此无法使用。
我想要这样的方法,因为我想拥有漂亮的小部件包 - 在一个地方存储CSS,JS,Twig模板(一个用于表单元素,另一个用于显示实体信息的页面元素)。然后我可以在配置文件中定义这些包,并且整齐地设置和存储。
有没有办法实现这个目标?
答案 0 :(得分:0)
它不是一个很好的解决方案,但您可以包含一个包含每个小部件的use语句的文件:
{# file 1 : file that calls the use tag : #}
{% use "@CoreWidgets/color/widget.html.twig" %}
然后按照您想要的方式加入:
{# file 2 : file that include it : #}
{% for widget in _widgets %}
{% include widget.path %}
{% endfor %}
因此widget.path必须存储文件1的路径。