2016-10-24 2 views
2

Я только начал использовать ветку в drupal8. Я пытаюсь вычислить разницу между двумя численными переменными drupal8, используя представления.Drupal8 Twig - преобразовать строку в целое число

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 и возвращать правильный результат с помощью веточки? Если у вас нет альтернативного решения?

EDIT: Я пытался SUM, а также НЕСКОЛЬКО два значения:

{{ 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, а не их реальной стоимостью?

EDIT 2: Я нашел проблему. Значение, которое было использовано, - field_goals_for__value вместо field_goals_for. К сожалению, я не могу найти способ использовать их оба в одном текстовом поле.

+1

Вы пытались использовать 'intval' вместо' number_format'? – anatoli

+1

Вам не нужно их преобразовывать, как видно [здесь] (http://twigfiddle.com/21xsoy), используя 'number_format', что заставляет номера обрабатываться как строки – DarkBee

+0

Я пробовал оба ваших решения и ничего не работает. Я думаю, что проблема связана с drupal, но я не могу понять, как это сделать. {{field_goals_for}} возвращает 24, {{field_goals_for | intval}} возвращает 0 – ciaobetty

ответ

0

number_format Формат форматов фильтров. Вы можете управлять количеством десятичных знаков, десятичной запятой и разделителем тысяч, используя дополнительные аргументы.

В качестве примера:

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

Напечатает:

21,00 

Проверить here рабочий пример.

Надежда эта помощь

+0

Большое спасибо, ваше решение отлично работает на веточке, но не в моей среде drupal. Я думаю, что проблема связана с этим, но я не могу понять, почему он работает неправильно. – ciaobetty

+0

hi @ciaobetty очень странно, проверьте также [this] (http://twigfiddle.com/rt5der/2) пример со строковой переменной и проверьте тот же результат.Попробуйте проверить значение REAL для двух переменных. ПЕРЕД ДИФОМ, чтобы исключить значение, отличаются от конфигурации – Matteo

+1

, к сожалению, я уже проверил их, я напечатал {{field_goals_for}} и {{field_goals_against}} перед вычитанием, и они возвращаются 24 и 3 и сохраняются в поле «Число» (целое число) drupal. – ciaobetty

0

number_format фильтр был добавлен в Twig 1.5

пожалуйста, проверьте версию прут

(жаль, что это был изначально комментарий, но так как я еще не могу комментировать, я написал ответ)

+0

У меня есть версия 1.24.0 – ciaobetty

0

попробовать что

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

Это работает для меня.

Смежные вопросы