symfony 错误:“已定义”测试仅适用于简单变量

yk9xbfzb  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(130)

我尝试用twig/symfony以特定格式显示价格。我想考虑null的情况(没有价格),但是我得到了这个Symfony错误:
“已定义”测试仅适用于简单变量。
下面是我的代码:

<td>{{ _self.formatRemuneration(remunerationValues.variable_monthly_remuneration|number_format(2, ',', ' ') ?? null) }}</td>

如果没有这个?? null部分,它只在数据库中存在价格时才起作用。我不考虑空的情况。
我还尝试在宏内移动过滤器(|number_format(2, ',', ' ')),但我得到错误或0.00值,而不是什么都没有。

{% macro formatRemuneration(remuneration) %}
    {{ remuneration is not null ? 'profile.remuneration.formated'|trans({'remuneration': remuneration}, 'company_position') : '' }}
{% endmacro %}

你能帮我写这个条件吗?

kuarbcqp

kuarbcqp1#

首先,我不知道为什么你要做一个叫做formatRemuneration的东西,并试图同时应用过滤器number_format
如果我是你,我会把过滤器移到你的宏中,然后你可以在没有设置价格的情况下测试null值,并返回你想要的任何值,例如Not applicable
要修复这个错误,你只需要计算变量,而不是整行,见下面。这是因为过滤器number_format返回示例Twig\Markup的对象

<td>{{ _self.formatRemuneration(remunerationValues.variable_monthly_remuneration ?? null) }}</td>

如果由于某种原因无法移动筛选器number_format,则需要将代码段更改为以下代码:

<td>{{ _self.formatRemuneration((remunerationValues.variable_monthly_remuneration ?? null)|number_format(2, ',', ' ')) }}</td>

请记住,null将转换为0.00

相关问题