【问题标题】:Drupal8 Twig - convert string to integerDrupal8 Twig - 将字符串转换为整数
【发布时间】:2017-03-05 22:08:07
【问题描述】:

我刚开始在 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 返回正确的结果?如果没有,您有其他解决方案可以建议吗?

编辑: 我尝试对这两个值求和并乘以:

{{ 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。不幸的是,我找不到在同一个文本字段中同时使用它们的方法。

【问题讨论】:

  • 你试过用intval代替number_format吗?
  • 你不需要像here那样转换它们,使用number_format是导致数字被视为字符串的原因
  • 我尝试了您的两种解决方案,但没有任何效果。我认为这个问题与drupal有关,但我不明白如何。 {{ field_goals_for }} 返回 24,{{ field_goals_for|intval }} 返回 0

标签: string int twig drupal-theming drupal-8


【解决方案1】:

试试看

{{ diff["#markup"]|number_format(2,',') }}

它对我有用。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题 - 我必须添加“#markup”才能使其正常工作。

     {{items[0].content['#markup']|number_format/5*100}}
    

    【讨论】:

      【解决方案3】:

      剥离标签对我来说是个窍门!

      {% set diff = field_goals_for|striptags - field_goals_against|striptags %}
      {{ diff }}
      

      【讨论】:

        【解决方案4】:

        number_format 过滤器格式化数字。您可以使用附加参数控制小数位数、小数点和千位分隔符。

        例如:

        {% set diff = field_goals_for - field_goals_against %}
        {{ diff|number_format(2,',') }}
        

        将打印:

        21,00
        

        检查here 一个工作示例。

        希望有帮助

        【讨论】:

        • 非常感谢,您的解决方案在 twig 上完美运行,但在我的 drupal 环境中却不行。我认为问题与此有关,但我不明白为什么它不能正常工作。
        • 嗨@ciaobetty 很奇怪,还要检查this 带有字符串变量的示例并检查相同的结果。尝试在 diff 之前检查两个变量的 REAL 值,以排除值不同而不是配置
        • 不幸的是我已经检查了它们,我在减法之前打印了 {{ field_goals_for }} 和 {{ field_goals_against }},它们返回 24 和 3 并存储在数字(整数)drupal 字段中。跨度>
        【解决方案5】:

        在 Twig 1.5 中添加了 number_format 过滤器

        请检查您的树枝版本

        (对不起,这最初是一个评论,但由于我还不能评论,我写了一个答案)

        【讨论】:

        • 我的版本是 1.24.0
        【解决方案6】:

        试试

        {{ diff.__toString|number_format(2,',') }}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-21
          • 2010-12-31
          相关资源
          最近更新 更多