Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 小枝';s属性函数:格式化数字_Symfony_Twig - Fatal编程技术网

Symfony 小枝';s属性函数:格式化数字

Symfony 小枝';s属性函数:格式化数字,symfony,twig,Symfony,Twig,在Symfony2应用程序中,我使用Twig的函数以通用方式显示产品的属性:我有一个属性名称数组,并在其中循环显示属性: {% for property in arrayProperties %} {{ attribute(entity, property)|trans }} {% endfor %} 这些属性可以是普通属性或数字属性,例如: 说明:文本 _X的个数:整数 尺寸:浮动(比例=2) _的尺寸:浮动(比例=5) 问题在于,浮点属性的显示方式如下: 尺寸:0.42 尺寸_

在Symfony2应用程序中,我使用Twig的函数以通用方式显示产品的属性:我有一个属性名称数组,并在其中循环显示属性:

{% for property in arrayProperties %}
    {{ attribute(entity, property)|trans }}
{% endfor %}
这些属性可以是普通属性或数字属性,例如:

  • 说明:文本
  • _X的个数:整数
  • 尺寸:浮动(比例=2)
  • _的尺寸:浮动(比例=5)
问题在于,浮点属性的显示方式如下:

尺寸:0.42

尺寸_/Z:0.84848

虽然我想用逗号分隔符显示,但这样:

Y的大小:0,42

尺寸(单位:084848)

似乎我不能在属性函数之后立即使用该函数,因为它将在
0
中转换我的literal值,即使我可以找到一种方法来测试显示的值是数值还是literal值(a
是\u numeric
ish函数),我也无法确定属性的比例(我应该在逗号后显示多少个数字,这是
number\u格式的第一个参数

是否有一种通用方法可以更改Twig显示这些属性的方式

在我的小树枝的配置(config.yml)中,我已经有:

number_format:
    decimals: 0
    decimal_point: ','
    thousands_separator: ' '
这似乎适用于应用程序的其余部分,我不使用
属性
函数来显示属性


谢谢!

因此,请在
阵列属性中定义其他类型,添加类型和比例,以便可以在循环中进行测试,而不必调用
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 %}
{%用于属性名称,属性信息位于属性%}
{%if属性_infos.type='数值'%}
{{attribute(obj,property_name){number_格式(property_infos.scale,',',',')}
{%else%} {{attribute(obj,property_name){trans}}
{%endif%} {%endfor%}
您需要编写自己的细枝扩展来处理此问题:


您可能需要编写自己的小枝扩展来处理此问题:哇!至少现在我知道了小枝扩展的用途…我会尝试一下,谢谢!您应该创建一个答案,以便我可以验证它,让其他人看到@CarlosGranados。您应该看看
localizednumber
过滤器:这是一个好主意,但应用程序阳离子非常复杂,而且此解决方案缺乏可维护性,并且由于应用程序中依赖此attribute()方法的实体数量众多,因此实现起来非常困难……不过,谢谢:)因此我不理解为什么您有
arrayproperty
obj
,如果您想让代码更清晰,您应该只处理obj,并且使用一个只返回您想要为该对象显示的属性的方法。这就是我所拥有的,实际上我的ArrayProperty来自obj.getPropertiesToDisplay()。检索属性的比例和类型意味着遍历所有对象(很多)并找出每个对象的所有属性(很多!)的比例和类型!所以你可以做一个扩展,通过反射读取属性类型。是的,这是我选择的解决方案,它工作得很好!谢谢;)