如何使用Twig以数字格式省略零值小数?

时间:2017-09-29 22:57:14

标签: php symfony twig decimal decimalformat

我想删除毫无意义的十进制数字,如下所示:

14.50   => 14.5
14.0500 => 14.05
14.000  => 14

我正在搜索如何做到这一点,我发现了以下方式:

{{ number|trim('0')|trim('.') }}

但上述过滤器的唯一问题是以下情况:

0.023 => 023

有谁知道我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:1)

你没有在任何地方提到它,但我认为你的“数字”变量实际上是字符串,否则默认行为实际上就是你所期待的......

我的建议只是将这些string变量转换为PHP代码中某处的float变量,而Twig将按照您的预期呈现它们。

也就是说,如果确实需要在Twig中执行此操作,则可以通过对字符串执行任何算术运算来自动将字符串转换为数字。请参阅以下示例:

{% set stringNumber = '14.0500' %}
{% set number = 14.0500 %}

{{ stringNumber }}      {# Prints 14.0500 #}
{{ number }}            {# Prints 14.05 #}
{{ stringNumber + 0 }}  {# Prints 14.05 #}

此处的完整示例:https://twigfiddle.com/hwl82b

答案 1 :(得分:0)

您可以编写自己的树枝过滤器来处理此问题。

看看how to create your custom twig extension

在您的情况下,过滤器应如下所示:

class NumberExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return [
            new \Twig_SimpleFilter('trim_number', [$this, 'trimNumber'])
        ];
    }

    /**
     * @param $number
     * @return int
     */
    public function trimNumber($number)
    {
        if($number < 1){
            return 0;
        }

        return trim($number, '\.0');
    }
}

你可以像这样使用过滤器:

{{ number | trim_number }}