String Drupal8细枝-将字符串转换为整数
我刚开始在drupal8中使用twig。我试图用视图计算两个数值变量之间的差异String Drupal8细枝-将字符串转换为整数,string,int,twig,drupal-theming,drupal-8,String,Int,Twig,Drupal Theming,Drupal 8,我刚开始在drupal8中使用twig。我试图用视图计算两个数值变量之间的差异 field_goals_for: 24 field_goals_against: 3 field_goals_difference: should return 21 but returns 1 我已经尝试过类似的东西(有数字格式和没有数字格式): 我假设问题是这两个变量是字符串而不是int 有一种方法可以将它们转换为int并使用twig返回正确的结果?如果没有,您是否有其他解决方案可供建议 编辑: 我尝试将这两个
field_goals_for: 24
field_goals_against: 3
field_goals_difference: should return 21 but returns 1
我已经尝试过类似的东西(有数字格式和没有数字格式):
我假设问题是这两个变量是字符串而不是int
有一种方法可以将它们转换为int并使用twig返回正确的结果?如果没有,您是否有其他解决方案可供建议
编辑:
我尝试将这两个值相加并乘以:
{{ 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:我发现了问题。要使用的值是字段\目标\值,而不是字段\目标\值。不幸的是,我找不到在同一文本字段中同时使用这两种格式的方法。过滤器设置数字格式。您可以使用附加参数控制小数位数、小数点和千位分隔符
例如:
{% set diff = field_goals_for - field_goals_against %}
{{ diff|number_format(2,',') }}
将打印:
21,00
检查一个工作示例
希望此帮助Twig 1.5中添加了数字\u格式过滤器 请检查你的小枝版本 (很抱歉,这最初是一个评论,但由于我还不能发表评论,所以我写了一个答案)试试看
{{ diff["#markup"]|number_format(2,',') }}
它对我很有用。我也遇到了类似的问题——我必须添加“#标记”才能让它工作
{{items[0].content['#markup']|number_format/5*100}}
试一试
剥下标签是我的诀窍
{% set diff = field_goals_for|striptags - field_goals_against|striptags %}
{{ diff }}
您是否尝试过使用
intval
而不是number\u格式
?您不需要转换它们,正如所见,使用number\u格式
是导致数字被视为字符串的原因。我尝试了两种解决方案,但均无效。我认为这个问题与drupal有关,但我不明白是怎么回事。{{field_goals_for}返回24,{{{field_goals_for | intval}返回0谢谢,您的解决方案在twig上非常有效,但在我的drupal环境中却不行。我认为问题与此有关,但我不明白它为什么不能正常工作。hi@ciaobetty非常奇怪,请使用字符串变量检查示例,并检查相同的结果。尝试在差异之前检查两个变量的实际值,以排除值不同而不是配置。不幸的是,我已经检查了它们,我在减法之前打印了{field_goals_for}}和{{field_goals_反对}},它们返回24和3,并存储在一个数字(整数)中drupal字段。我有1.24.0版
{{ diff.__toString|number_format(2,',') }}
{% set diff = field_goals_for|striptags - field_goals_against|striptags %}
{{ diff }}