Как создать макрос, который конвертирует байты в КБ, МБ, ГБ и т. Д. - PullRequest
1 голос
/ 30 ноября 2011

У меня есть видео на моей странице, и мы можем скачать его, рядом со ссылкой для скачивания у меня есть номер, который показывает размер видео.

Теперь у меня есть его в байтах, и я хочупреобразовать его в КБ, МБ или ГБ.Из того, что я понял, лучший способ сделать это с помощью макроса.

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

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

Я знаю, что у меня не так много, но мне действительно нужна помощь по синтаксису и как это сделать.Я хочу, чтобы мое окончательное значение было равно «12,2 МБ»

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

Как упомянул @Flukey, способ создать расширение.

Я сделал это в качестве упражненияПросто зайдите на

https://github.com/BrazilianFriendsOfSymfony/BFOSTwigExtensionsBundle

и получите расширение.

2 голосов
/ 04 февраля 2013

И старый вопрос, но для всех остальных -> , если по какой-либо причине вы не хотите вмешиваться в 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 %}

РЕДАКТИРОВАТЬ: изменил сценарий, чтобы соответствовать десятичному измерению (КБ, МБ, ГБ ..) вместо двоичного (КиБ, МиБ, ГиБ ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...