Я получаю сообщение об ошибке в веб-форме, которую разрабатываю. Просто чтобы дать некоторое представление о веб-форме, веб-форма принимает некоторые данные (тип клиента и ежемесячное потребление воды) и рассчитывает стоимость воды, твердых отходов и канализации. Я использую вычисленные ветки для расчета этих затрат и отображаю их в форме. (Здесь все усложняется). Я показываю текущие затраты и новые затраты, потому что мы будем применять новую процентную ставку. Таким образом, пользователь сможет видеть текущие и новые затраты на воду, твердые отходы и канализацию. Все это работает.
Теперь, когда я получаю сообщение об ошибке, я вычисляю окончательную текущую стоимость и окончательную новую стоимость. (По сути, окончательный счет, добавление воды, твердых отходов и канализации, чтобы получить окончательный счет). Я использую вычисляемую ветку для Final Current Bill и Final New Bill.
я просто пытаюсь добавить
{{ data.current_water_bill + data.current_wastewater_bill + data.current_solid_waste_bill }}
чтобы получить окончательный текущий счет.
Но я получаю эту ошибку:
Примечание: объект класса Drupal\Core\Render\Markup не может быть
преобразуется в число в
__TwigTemplate_b425658712bf48861094edd9faa7ac1869e3493432f58af037adf7477e731085->doDisplay()
(строка 39 из
/tmp/rolling/26f07ce/twig/6255afcf3e700___string_template__3115aa_bPBQWZ4Ws1n7j52GBOzrbmeqE/rL677g5Ips8i5OfG_zSuLsRcL3s-sFwxT2_H3MJmsfo.php).
Предоставьте детали и любые исследования
Я посвятил некоторое время поиску ошибки в Интернете. Я обнаружил множество проблем, но в конечном итоге похоже, что мне нужно преобразовать данные в число. Я пытался сделать это с помощью фильтра веток |формат_числа
и тогда я получаю новую ошибку:
Примечание: объект класса Drupal\Core\Render\Markup не может быть
преобразуется в число с плавающей запятой в twig_number_format_filter() (строка 611
/code/vendor/twig/twig/src/Extension/CoreExtension.php).
Я могу рассчитать и отобразить значения, но я просто не могу их добавить. Я добавил данные в переменные и все еще не могу работать с ними в twig. Любые идеи или предложения будут оценены.
строка:
'#тип': флексбокс
Тип клиента:
'#тип': выберите
'#title': 'Тип клиента'
'#параметры':
Промышленный: Промышленный
Пейзаж: Пейзаж
Многоквартирный дом: Многоквартирный дом
Нежилой: Нежилой
Восстановлено: Восстановлено
Жилой: Жилой
'# требуется': правда
строка_3:
'#тип': флексбокс
'#состояния':
видимый:
':input[name="customer_type"]':
заполнено: правда
ежемесячное_потребление:
'#тип': номер
'#title': 'Ежемесячное потребление (в тысячах галлонов)'
'# требуется': правда
'#макс': 100
'#шаг 1
строка_6:
'#тип': флексбокс
'#состояния':
видимый:
':input[name="customer_type"]':
стоимость: многоквартирный дом
количество единиц:
'#тип': номер
'#title': 'Количество единиц'
'# требуется': правда
строка_9:
'#тип': флексбокс
'#состояния':
видимый:
':input[name="customer_type"]':
стоимость: Жилая
alley_customer:
'#тип': выберите
'#title': 'Вы постоянный клиент? '
'#параметры':
«Да»: «Да»
'Нет нет'
'# требуется': правда
строка_2:
'#тип': флексбокс
'#состояния':
видимый:
':input[name="customer_type"]':
заполнено: правда
вода_контейнер:
'#тип': набор полей
'#название': Вода
строка_4:
'#тип': флексбокс
current_water_bill:
'#тип': вычисленный_twig
'#title': 'Текущий счет за воду'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% установленное месячное потребление = data.monthly_consumption %}
{# Заявление If/Else на основе типа клиента #}
{% if customer == 'Жилой' %}
{# Ежемесячная плата за воду для жилых помещений
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для жилых домов #}
{% set firstTenKVol = 1,60 %}
{% установить nextTenKVol = 2,08 %}
{% set nextFourtyKVol = 2,62 %}
{% set overSixtyKVol = 3,27 %}
{# Жилой математический расчет
========================= #}
{% set firstTenK = (ежемесячное потребление * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTenK = ((monthlyConsumment - 10) * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set nextFourtyK = ((monthlyConsumment - 20) * nextFourtyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set overSixtyK = ((ежемесячное потребление - 60) * overSixtyKVol) + (40 * nextFourtyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{# Заявление If/Else, основанное на ежемесячном потреблении воды жилыми домами,
Будут отображаться математические расчеты как текущий счет за воду
========================= #}
{%, если месячное потребление >= 61 %}
<p>${{ overSixtyK }}</p>
{% elseif месячное потребление <= 60 и месячное потребление >= 21 %}
<p>${{ nextFourtyK }}</p>
{% elseif месячное потребление <= 20 и месячное потребление >= 11 %}
<p>${{ nextTenK }}</p>
{% elseif ежемесячное потребление <= 10 %}
<p>${{ firstTenK }}</p>
{% конец%}
{% elseif клиент == 'Многосемейный' %}
{# Ежемесячная плата за объем воды для многоквартирных домов
========================= #}
{% set baseFee = 29,31 %} {# использование метража 2 дюйма в качестве цены по умолчанию для многоквартирных домов #}
{% set firstTenKVol = 0,87 %}
{% установить nextTenKVol = 1,07 %}
{% set nextTwentyKVol = 1,47 %}
{% set overFourtyKVol = 2,21 %}
{# Многоквартирный математический расчет
========================= #}
{% set firstTenK = (ежемесячное потребление * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTenK = ((monthlyConsumment - 10) * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTwentyK = ((monthlyConsumment - 20) * nextTwentyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set overFourtyK = ((monthlyConsumption - 40) * overFourtyKVol) + (20 * nextTwentyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{# Заявление If/Else, основанное на ежемесячном потреблении воды многоквартирным домом
========================= #}
{%, если месячное потребление >= 41 %}
<p>${{ overFourtyK }}</p>
{% elseif месячное потребление <= 40 и месячное потребление >= 21 %}
<p>${{ nextTwentyK }}</p>
{% elseif месячное потребление <= 20 и месячное потребление >= 11 %}
<p>${{ nextTenK }}</p>
{% elseif ежемесячное потребление <= 10 %}
<p>${{ firstTenK }}</p>
{% конец%}
{% elseif клиент == 'Нежилой дом' %}
{# Ежемесячная плата за воду для нежилых помещений
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для нежилых помещений #}
{% установить allUsageVol = 2,11 %}
{# Нежилой математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage }}</p>
{% elseif клиент == 'Пейзаж' %}
{# Ежемесячная плата за воду для ландшафта
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для альбомной ориентации #}
{% установить allUsageVol = 2,55%}
{# Ландшафтный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage }}</p>
{% elseif клиент == 'Промышленный' %}
{# Ежемесячные платежи за объем промышленной воды
========================= #}
{% set baseFee = 10,35 %} {# использование размера метра 3/4 дюйма в качестве цены по умолчанию для промышленных #}
{% установить allUsageVol = 2,08%}
{# Промышленный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage }}</p>
{% elseif клиент == 'Восстановлено' %}
{# Ежемесячная плата за объем рекуперированной воды
========================= #}
{% set baseFee = 10,35 %} {# с использованием размера метра 3/4 дюйма в качестве цены по умолчанию для вторичного сырья #}
{% установить allUsageVol = 0,69%}
{# Восстановленный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage }}</p>
{% конец%}
</div>
'#ajax': правда
строка_5:
'#тип': флексбокс
new_water_bill:
'#тип': вычисленный_twig
'#title': 'Новый счет за воду'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% установленное месячное потребление = data.monthly_consumption %}
{# Заявление If/Else на основе типа клиента #}
{% if customer == 'Жилой' %}
{# Ежемесячная плата за воду для жилых помещений
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для жилых домов #}
{% set firstTenKVol = 1,60 %}
{% установить nextTenKVol = 2,08 %}
{% set nextFourtyKVol = 2,62 %}
{% set overSixtyKVol = 3,27 %}
{% установить предложенныйRateChange = 1,27 %}
{# Жилой математический расчет
========================= #}
{% set firstTenK = (ежемесячное потребление * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTenK = ((monthlyConsumment - 10) * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set nextFourtyK = ((monthlyConsumment - 20) * nextFourtyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set overSixtyK = ((ежемесячное потребление - 60) * overSixtyKVol) + (40 * nextFourtyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{# Заявление If/Else, основанное на ежемесячном потреблении воды жилыми домами,
Будут отображаться математические расчеты как новый счет за воду
========================= #}
{%, если месячное потребление >= 61 %}
<p>${{ overSixtyK + ((overSixtyK * OfferRateChange) /100)|round(2) }}</p>
{% elseif месячное потребление <= 60 и месячное потребление >= 21 %}
<p>${{ nextFourtyK + ((nextFourtyK * OfferRateChange) /100)|round(2) }}</p>
{% elseif месячное потребление <= 20 и месячное потребление >= 11 %}
<p>${{ nextTenK + ((nextTenK * OfferRateChange) /100)|round(2) }}</p>
{% elseif ежемесячное потребление <= 10 %}
<p>${{ firstTenK + ((firstTenK * OfferRateChange) /100)|round(2) }}</p>
{% конец%}
{% elseif клиент == 'Многосемейный' %}
{# Ежемесячная плата за объем воды для многоквартирных домов
========================= #}
{% set baseFee = 29,31 %} {# использование метража 2 дюйма в качестве цены по умолчанию для многоквартирных домов #}
{% set firstTenKVol = 0,87 %}
{% установить nextTenKVol = 1,07 %}
{% set nextTwentyKVol = 1,47 %}
{% set overFourtyKVol = 2,21 %}
{% установить предложенныйRateChange = 1,83 %}
{# Многоквартирный математический расчет
========================= #}
{% set firstTenK = (ежемесячное потребление * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTenK = ((monthlyConsumment - 10) * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set nextTwentyK = ((monthlyConsumment - 20) * nextTwentyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{% set overFourtyK = ((monthlyConsumption - 40) * overFourtyKVol) + (20 * nextTwentyKVol) + (10 * nextTenKVol) + (10 * firstTenKVol) + baseFee|number_format(2) %}
{# Заявление If/Else, основанное на ежемесячном потреблении воды многоквартирным домом
========================= #}
{%, если месячное потребление >= 41 %}
<p>${{ overFourtyK + ((overFourtyK * OfferRateChange) /100)|round(2) }}</p>
{% elseif месячное потребление <= 40 и месячное потребление >= 21 %}
<p>${{ nextTwentyK + ((nextTwentyK * OfferRateChange) /100)|round(2) }}</p>
{% elseif месячное потребление <= 20 и месячное потребление >= 11 %}
<p>${{ nextTenK + ((nextTenK * OfferRateChange) /100)|round(2) }}</p>
{% elseif ежемесячное потребление <= 10 %}
<p>${{ firstTenK + ((firstTenK * OfferRateChange) /100)|round(2) }}</p>
{% конец%}
{% elseif клиент == 'Нежилой дом' %}
{# Ежемесячная плата за воду для нежилых помещений
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для нежилых помещений #}
{% установить allUsageVol = 2,11 %}
{% установить предложенныйRateChange = 3,79 %}
{# Нежилой математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage + ((allUsage * OfferRateChange) /100)|round(2) }}</p>
{% elseif клиент == 'Пейзаж' %}
{# Ежемесячная плата за воду для ландшафта
========================= #}
{% set baseFee = 10,35 %} {# использование метража 3/4 дюйма в качестве цены по умолчанию для альбомной ориентации #}
{% установить allUsageVol = 2,55%}
{% установить предложенныйRateChange = 5,88 %}
{# Ландшафтный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage + ((allUsage * OfferRateChange) /100)|round(2) }}</p>
{% elseif клиент == 'Промышленный' %}
{# Ежемесячные платежи за объем промышленной воды
========================= #}
{% set baseFee = 10,35 %} {# использование размера метра 3/4 дюйма в качестве цены по умолчанию для промышленных #}
{% установить allUsageVol = 2,08%}
{% установить предложенныйRateChange = 4,33 %}
{# Промышленный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage + ((allUsage * OfferRateChange) /100)|round(2) }}</p>
{% elseif клиент == 'Восстановлено' %}
{# Ежемесячная плата за объем рекуперированной воды
========================= #}
{% set baseFee = 10,35 %} {# с использованием размера метра 3/4 дюйма в качестве цены по умолчанию для вторичного сырья #}
{% установить allUsageVol = 0,69%}
{% установить предложенныйRateChange = 8,00 %}
{# Восстановленный математический расчет
========================= #}
{% set allUsage = (monthlyConsumption * allUsageVol) + baseFee|number_format(2) %}
<p>${{ allUsage + ((allUsage * OfferRateChange) /100)|round(2) }}</p>
{% конец%}
</div>
'#ajax': правда
канализационный_контейнер:
'#тип': набор полей
'#title': канализация
строка_7:
'#тип': флексбокс
current_wastewater_bill:
'#тип': вычисленный_twig
'#title': 'Текущий счет за сточные воды'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% set monthConsumment = data.monthly_consumption %} {# Используется только для нежилых помещений #}
{# Заявление If/Else на основе типа клиента #}
{% if customer == 'Жилой' %}
{# Плата за сточные воды в жилом секторе
========================= #}
{% установить базовую комиссию = 27,32 %}
{# Расчет бытовых сточных вод
========================= #}
{% set WasteWaterRate = baseFee|number_format(2) %}
<p>${{ WasteWaterRate }}</p>
{% elseif data.customer_type == 'Несколько семей' %}
{# Плата за сточные воды для многоквартирных домов
========================= #}
{% установить базовую комиссию = 9,76 %}
{% set numberOfUnits = data.number_of_units %}
{# Математический расчет многоквартирных сточных вод
========================= #}
{% set WasteWaterRate = baseFee * numberOfUnits|number_format(2) %}
<p>${{ WasteWaterRate }}</p>
{% elseif data.customer_type == 'Нежилое помещение' %}
{# Плата за сточные воды для нежилых помещений
========================= #}
{% set baseFee = 7,65 %} {# Ежемесячная базовая плата за нежилое помещение #}
{% set volumeFee = 3,49 %} {# Плата за объем за 1000 галлонов потребления воды по счетчику #}
{# Математический расчет нежилых сточных вод
========================= #}
{% set WasteWaterRate = (ежемесячное потребление * объемная плата) + базовая плата|number_format(2) %}
<p>${{ WasteWaterRate }}</p>
{% elseif data.customer_type == 'Промышленный' %}
{# Плата за промышленные сточные воды
========================= #}
{% set baseFee = 7,65 %} {# Ежемесячная базовая плата за нежилое помещение #}
{% set volumeFee = 3,49 %} {# Плата за объем за 1000 галлонов потребления воды по счетчику #}
{# Расчет промышленных сточных вод
========================= #}
{% set WasteWaterRate = (ежемесячное потребление * объемная плата) + базовая плата|number_format(2) %}
<p>${{ WasteWaterRate }}</p>
{% конец%}
</div>
'#ajax': правда
строка_8:
'#тип': флексбокс
new_wastewater_bill:
'#тип': вычисленный_twig
'#title': 'Новый законопроект об очистке сточных вод'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% set monthConsumment = data.monthly_consumption %} {# Используется только для нежилых помещений #}
{# Заявление If/Else на основе типа клиента #}
{% if customer == 'Жилой' %}
{# Плата за сточные воды в жилом секторе
========================= #}
{% установить базовую комиссию = 27,32 %}
{% установить предложенныйRateChange = 1,21%}
{# Расчет бытовых сточных вод
========================= #}
{% set WasteWaterRate = baseFee|number_format(2) %}
<p>${{ WasteWaterRate + ((wasteWaterRate * OfferRateChange) /100)|round(2) }}</p>
{% elseif data.customer_type == 'Несколько семей' %}
{# Плата за сточные воды для многоквартирных домов
========================= #}
{% установить базовую комиссию = 9,76 %}
{% set numberOfUnits = data.number_of_units %}
{% установить предложенныйRateChange = 8,30 %}
{# Математический расчет многоквартирных сточных вод
========================= #}
{% set WasteWaterRate = baseFee * numberOfUnits|number_format(2) %}
<p>${{ WasteWaterRate + ((wasteWaterRate * OfferRateChange) /100)|round(2) }}</p>
{% elseif data.customer_type == 'Нежилое помещение' %}
{# Плата за сточные воды для нежилых помещений
========================= #}
{% set baseFee = 7,65 %} {# Ежемесячная базовая плата за нежилое помещение #}
{% set volumeFee = 3,49 %} {# Плата за объем за 1000 галлонов потребления воды по счетчику #}
{% установить предложенныйRateChange = 6,88 %}
{# Математический расчет нежилых сточных вод
========================= #}
{% set WasteWaterRate = (ежемесячное потребление * объемная плата) + базовая плата|number_format(2) %}
<p>${{ WasteWaterRate + ((wasteWaterRate * OfferRateChange) /100)|round(2) }}</p>
{% elseif data.customer_type == 'Промышленный' %}
{# Плата за промышленные сточные воды
========================= #}
{% set baseFee = 7,65 %} {# Ежемесячная базовая плата за нежилое помещение #}
{% set volumeFee = 3,49 %} {# Плата за объем за 1000 галлонов потребления воды по счетчику #}
{% установить предложенныйRateChange = 6,88 %}
{# Расчет промышленных сточных вод
========================= #}
{% set WasteWaterRate = (ежемесячное потребление * объемная плата) + базовая плата|number_format(2) %}
<p>${{ WasteWaterRate + ((wasteWaterRate * OfferRateChange) /100)|round(2) }}</p>
{% конец%}
</div>
'#ajax': правда
solid_waste_container:
'#тип': набор полей
'#title': 'Твердые отходы'
'#состояния':
видимый:
':input[name="alley_customer"]':
заполнено: правда
строка_10:
'#тип': флексбокс
current_solid_waste_bill:
'#тип': вычисленный_twig
'#title': 'Текущий счет за твердые отходы'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% set hasAlley = data.alley_customer %}
{# Плата за твердые отходы
========================= #}
{% установить базовую комиссию = 17,95 %}
{% set alleyCustomerRate = 1,61 %}
{# Математический расчет твердых отходов
========================= #}
{% set solidWasteRate = baseFee|number_format(2) %}
{% set solidWasteRateAlley = baseFee + alleyCustomerRate|number_format(2) %}
{# Условное утверждение на основе того, есть ли у клиента переулок или нет #}
{% if customer == 'Жилой' и hasAlley == 'Да' %}
<p>${{solidWasteRateAlley}}</p>
{% elseif клиент == 'Жилой' %}
<p>${{ SolidWasteRate }}</p>
{% конец%}
</div>
'#ajax': правда
строка_11:
'#тип': флексбокс
new_solid_waste_bill:
'#тип': вычисленный_twig
'#title': 'Новый законопроект о твердых отходах'
'#шаблон': |
<div class="form-text required form-control">
{# Глобальные переменные
================================================== #}
{% set customer = data.customer_type %}
{% set hasAlley = data.alley_customer %}
{# Плата за твердые отходы
========================= #}
{% установить базовую комиссию = 17,95 %}
{% set alleyCustomerRate = 1,61 %}
{% установить предложенныйRateChange = 3,40 %}
{# Математический расчет твердых отходов
========================= #}
{% set solidWasteRate = baseFee|number_format(2) %}
{% set solidWasteRateAlley = baseFee + alleyCustomerRate|number_format(2) %}
{# Условное утверждение на основе того, есть ли у клиента переулок или нет #}
{% if customer == 'Жилой' и hasAlley == 'Да' %}
<p>${{ solidWasteRateAlley + ((solidWasteRateAlley * OfferRateChange) /100)|round(2) }}</p>
{% elseif клиент == 'Жилой' %}
<p>${{ SolidWasteRate + ((solidWasteRate * OfferRateChange) /100)|round(2) }}</p>
{% конец%}
</div>
'#ajax': правда
строка_12:
'#тип': флексбокс
окончательный_текущий_билль:
'#тип': вычисленный_twig
'#title': 'Окончательный текущий счет'
'#template': '{{ data.current_water_bill + data.current_wastewater_bill + data.current_solid_waste_bill|number_format(2) }}'
'#ajax': правда
final_new_bill:
'#тип': вычисленный_twig
'#title': 'Окончательный новый законопроект'
'#template': '{{ data.new_water_bill + data.new_wastewater_bill + data.new_solid_waste_bill }}'
'#ajax': правда