Symfony 如何创建将字节转换为KB、MB、GB等的宏

Symfony 如何创建将字节转换为KB、MB、GB等的宏,symfony,twig,Symfony,Twig,我有一个视频在我的网页,我们可以下载它,旁边的下载链接,我有一个数字,显示了视频的大小 现在我有了字节,我想把它转换成KB、MB或GB。据我所知,最好的方法是使用宏 {% macro downloadSize(bytes) %} {% spaceless %} {% set bytes = x/1024 %} {% if bytes < 1024 %} KB {% endif %} ... {% endspaceless %}

我有一个视频在我的网页,我们可以下载它,旁边的下载链接,我有一个数字,显示了视频的大小

现在我有了字节,我想把它转换成KB、MB或GB。据我所知,最好的方法是使用宏

{% macro downloadSize(bytes) %}
{% spaceless %}
     {% set bytes = x/1024 %}

     {% if bytes < 1024 %}
       KB
     {% endif %}
     ...    
{% endspaceless %}
{% endmacro %}
{%macro downloadSize(字节)%}
{%spaceless%}
{%set bytes=x/1024%}
{%如果字节<1024%}
KB
{%endif%}
...    
{%endspaceless%}
{%endmacro%}

我知道我没有太多,但我真的需要在语法和如何完成这方面的帮助。我希望我的最终值类似于@Flukey提到的“12.2MB”

,方法是创建一个扩展

我这样做是为了锻炼身体。去


获取扩展。

正如@Flukey提到的,方法是创建一个扩展

我这样做是为了锻炼身体。去


然后获取扩展名。

还有一个老问题,但对于其他人来说->如果出于任何原因,你不想干预TwigeExtensions,下面是宏的样子:

{% macro bytesToSize(bytes) %}
{% spaceless %}
    {% set kilobyte = 1000 %}
    {% set megabyte = kilobyte * 1000 %}
    {% set gigabyte = megabyte * 1000 %}
    {% set terabyte = gigabyte * 1000 %}
    {% set petabyte = terabyte * 1000 %}

    {% if bytes < kilobyte %}
        {{ bytes ~ ' B' }}
    {% elseif bytes < megabyte %}
        {{ (bytes / kilobyte)|number_format(2, '.') ~ ' KB' }}
    {% elseif bytes < gigabyte %}
        {{ (bytes / megabyte)|number_format(2, '.') ~ ' MB' }}
    {% elseif bytes < terabyte %}
        {{ (bytes / gigabyte)|number_format(2, '.') ~ ' GB' }}
    {% elseif bytes < petabyte %}
        {{ (bytes / terabyte)|number_format(2, '.') ~ ' TB' }}
    {% else %}
        {{ (bytes / petabyte)|number_format(2, '.') ~ ' PB' }}
    {% endif %}
{% endspaceless %}
{% endmacro %}
{%macro-bytesToSize(字节)%}
{%spaceless%}
{%set KB=1000%}
{%set MB=KB*1000%}
{%set千兆字节=兆字节*1000%}
{%set TB=GB*1000%}
{%set PB=TB*1000%}
{%if字节

编辑:修改脚本以匹配十进制度量(KB、MB、GB…),而不是二进制(KiB、MiB、GiB…)。

和老问题,但对于其他人->如果出于任何原因,您不想干预TwigExtensions,则宏的外观如下所示:

{% macro bytesToSize(bytes) %}
{% spaceless %}
    {% set kilobyte = 1000 %}
    {% set megabyte = kilobyte * 1000 %}
    {% set gigabyte = megabyte * 1000 %}
    {% set terabyte = gigabyte * 1000 %}
    {% set petabyte = terabyte * 1000 %}

    {% if bytes < kilobyte %}
        {{ bytes ~ ' B' }}
    {% elseif bytes < megabyte %}
        {{ (bytes / kilobyte)|number_format(2, '.') ~ ' KB' }}
    {% elseif bytes < gigabyte %}
        {{ (bytes / megabyte)|number_format(2, '.') ~ ' MB' }}
    {% elseif bytes < terabyte %}
        {{ (bytes / gigabyte)|number_format(2, '.') ~ ' GB' }}
    {% elseif bytes < petabyte %}
        {{ (bytes / terabyte)|number_format(2, '.') ~ ' TB' }}
    {% else %}
        {{ (bytes / petabyte)|number_format(2, '.') ~ ' PB' }}
    {% endif %}
{% endspaceless %}
{% endmacro %}
{%macro-bytesToSize(字节)%}
{%spaceless%}
{%set KB=1000%}
{%set MB=KB*1000%}
{%set千兆字节=兆字节*1000%}
{%set TB=GB*1000%}
{%set PB=TB*1000%}
{%if字节

编辑:修改脚本以匹配十进制度量值(KB、MB、GB…),而不是二进制度量值(KiB、MiB、GiB…。

创建一个细枝扩展。创建一个细枝扩展。很好,谢谢-我不想创建扩展,因为我只在一个模板中使用它。想知道为什么吗?脚本非常简单,我不认为它在计算TB/GB时会失败。很好,谢谢-我不想创建一个扩展,因为我只在一个模板中使用它。想知道为什么吗?这个脚本非常简单,我不认为它在计算TB/GB时会失败。