在Symfony2应用程序中,我使用Twig的attribute函数以通用方式显示产品的属性:我有一系列属性名称,并在其中循环显示属性:< / p>
{% for property in arrayProperties %}
{{ attribute(entity, property)|trans }}
{% endfor %}
这些属性可以是文字或数字,例如:
问题是浮动属性以这种方式显示:
size_of_Y:0.42
size_of_Z:0.84848
虽然我想用逗号分隔符显示,但这样:
size_of_Y:0,42
size_of_Z:0,84848
似乎我无法在属性函数之后立即使用number_format函数,因为它会转换0
中的 litteral 值,即使我能找到一种方法来测试显示的值是否为数字或小数值(is_numeric
ish函数),我仍然无法确定属性的大小(多少个数字)在我应该显示的逗号之后,这是number_format
)的第一个参数。
是否有通用方法来更改Twig显示这些属性的方式?
在我的Twig配置中( config.yml ),我已经拥有:
number_format:
decimals: 0
decimal_point: ','
thousands_separator: ' '
这似乎适用于应用程序的其余部分,我不会使用attribute
函数来显示属性。
谢谢!
答案 0 :(得分:1)
因此,在arrayProperties
中定义其他类型,添加类型和比例,以便您可以在循环中进行测试,因此不要为trans
调用数值。
{% for property_name, property_infos in properties %}
{% if property_infos.type == 'numeric' %}
{{ attribute(obj, property_name)|number_format(property_infos.scale, ',', ',') }}<br/>
{% else %}
{{ attribute(obj, property_name)|trans }}<br/>
{% endif %}
{% endfor %}
答案 1 :(得分:1)
您需要编写自己的Twig扩展来处理此问题: