Pregunta

Tengo un video en mi página y podemos descargarlo, al lado del enlace de descarga, tengo un número que muestra el tamaño del video.

Ahora lo tengo en bytes, y quiero convertirlo en KB, MB o GB. Por lo que entendí la mejor manera de hacerlo es con una macro.

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

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

Sé que no tengo mucho, pero realmente necesito ayuda en la sintaxis y cómo acomodar esto. Quiero que mi valor final sea como "12.2 MB"

¿Fue útil?

Solución

Como mencionó @flukey, la forma es crear una extensión.

Lo he hecho como un ejercicio. Solo ve a

https://github.com/brazilianfriendsofsymfony/bfostwigextensionsbundle

y obtener la extensión.

Otros consejos

Y vieja pregunta, pero para cualquier otra persona -> Si por alguna razón no quieres entrometerse con TwigExtensions Así es como se vería esa macro:

{% 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 %}

EDITAR: Modificado el script para que coincida con la medición decimal (KB, MB, GB ..) en lugar de binario (KIB, MIB, GIB ...).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top