2011-11-30 74 views
1

我在页面中有一个视频,我们可以下载它,在下载链接旁边有一个显示视频大小的数字。如何创建将字节转换为KB,MB,GB等的宏

现在我有它的字节数,我想将它转换为KB,MB或GB。从我所了解的最佳做法来看,这是一个宏。

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

    {% if bytes < 1024 %} 
     KB 
    {% endif %} 
    ...  
{% endspaceless %} 
{% endmacro %} 

我知道我没有太多,但我真的需要帮助的语法和如何实现这一点。我想我的最终价值如“12.2 MB”

+0

创建树枝扩展。 – Flukey

回答

2

老问题,但对于其他人 - >如果因为任何原因,你不想与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 %} 

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

+0

不错,谢谢 - 我不想创建一个扩展,因为我只在一个模板中使用它。 –

+0

它不适用于TB –

+0

它显示最多4 GB –

相关问题