我刚开始在drupal8中使用twig。我正在尝试使用视图计算两个数值drupal8变量之间的差异。
field_goals_for: 24
field_goals_against: 3
field_goals_difference: should return 21 but returns 1
我已尝试过这样的事情(有和没有number_formats):
{% set diff = field_goals_for|number_format - field_goals_against|number_format %}
{{ diff }}
我认为问题在于两个变量是字符串而不是int。
有一种方法可以将它们转换为int并使用twig返回正确的结果吗?如果没有,你有什么替代解决方案可以建议吗?
编辑: 我尝试使用SUM并同时使用MULTIPLE这两个值:
{{ field_goals_for }} = 24
{{ field_goals_against }} = 3
{{ field_goals_for - field_goals_against }} = 0
{{ field_goals_for + field_goals_against }} = 2
{{ field_goals_for * field_goals_against }} = 1
为什么他们被认为等于1而不是真正的价值?
编辑2:我发现了问题。已使用的值是field_goals_for__value而不是field_goals_for。不幸的是,我找不到在同一文本字段中使用它们的方法。答案 0 :(得分:1)
试试
{{ diff["#markup"]|number_format(2,',') }}
它对我有用。
答案 1 :(得分:1)
我遇到了类似的问题-我必须添加'#markup'才能使其正常工作。
{{items[0].content['#markup']|number_format/5*100}}
答案 2 :(得分:1)
剥离标签对我有用!
{% set diff = field_goals_for|striptags - field_goals_against|striptags %}
{{ diff }}
答案 3 :(得分:0)
number_format过滤器格式化数字。您可以使用其他参数控制小数位数,小数点和千位分隔符。
例如:
{% set diff = field_goals_for - field_goals_against %}
{{ diff|number_format(2,',') }}
将打印:
21,00
检查here一个有效的例子。
希望这个帮助
答案 4 :(得分:0)
在Twig 1.5
中添加了number_format过滤器请检查你的枝条版本
(对不起,这最初是评论,但因为我还没有评论,我写了一个答案)
答案 5 :(得分:0)
试试
{{ diff.__toString|number_format(2,',') }}