这个问题的背景是SmartVISU(http://smartvisu.de),一个基于jquery mobile和twig的家庭自动化前端。
twig属性(http://twig.sensiolabs.org/doc/functions/attribute.html)函数在单独使用时可以正常使用:
{% import 'icon.html' as icon %}
{{ attribute(icon, 'battery', ['ert', '', 'WZ1_rtr_battery', 2.1, 3]) }}
其中icon.html提供了一个宏
{% macro battery(id, gad_switch, gad_value, minval, maxval) %}
<svg id="{{ uid(page, id) }}" data-widget="icon.battery" data-item="{{ gad_value }}, {{ gad_switch }}" data-min="{{ minval|default('0') }}" data-max="{{ maxval|default('255') }}"
class="icon icon0" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100">
<g>
<rect x="44" y="21" width="12" height="3" />
<rect rx="3" x="35" y="25" width="30" height="45" fill="none" />
</g>
</svg>
{% endmacro %}
现在使用
{{ attribute(icon, 'battery', ['ert', '', 'WZ1_rtr_battery', 2.1, 3]) }}
在另一个宏中,事实证明它不起作用。只有我使用
{{ attribute(icon, 'battery', ['ert', '', 'WZ1_rtr_battery', '', 2.1, 3]) }}
相反它显示但是然后,min被忽略,而max参数工作正常。
这里是其他宏代码:
{% macro shifter(id, gad_switch, gad_value, pic_on, pic_off, minval, maxval) %}
{% import "icon.html" as icon %}
{% if pic_on|slice(0, 5) == 'icon.' %}
{{ attribute(icon, pic_on|slice(5), [id~1, gad_switch, gad_value, minval, maxval]) }}
{% else %}
<span id="{{ uid(page, id) }}" data-widget="basic.shifter" data-item="{{ gad_value }}, {{ gad_switch }}"
{% set pic_on = pic_on|default(icon1~'light_light_dim_00.png') %}
data-pic-on="{{ pic_on }}" data-pic-off="{{ pic_off |default(icon0~pic_on|slice(icon1|length)) }}"
data-min="{{ min|default('0') }}" data-max="{{ max|default('255') }}"
class="switch"><a><img class="icon" src="{{ pic_off|default(icon0~'light_light_dim_00.png') }}" /></a>
</span>
{% endif %}
{% endmacro %}
我无法找到错误,所以请看一下!