バイトをKB、MB、GBなどに変換するマクロを作成する方法

StackOverflow https://stackoverflow.com/questions/8330232

  •  26-10-2019
  •  | 
  •  

質問

私のページにビデオがあり、ダウンロードリンクの横にダウンロードできます。ビデオのサイズを示す番号があります。

今、私はそれをバイトで持っています、そして私はそれをKB、MB、またはGBで変換したいです。私が理解したことから、それを行う最善の方法はマクロを使用しています。

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

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

私はあまり持っていないことを知っていますが、私は本当に構文とこれを順守する方法について助けが必要です。最終的な価値を「12.2 MB」のようにしたい

役に立ちましたか?

解決

@flukeyが述べたように、方法は拡張機能を作成する方法です。

私はそれを演習としてやった。行くだけです

https://github.com/brazilianfriendsofsymfony/bfostwigextensionsbundle

拡張機能を取得します。

他のヒント

そして古い質問ですが、他の人のために - > 何らかの理由で、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 %}

編集: バイナリ(KIB、MIB、GIB ...)の代わりに、10進数測定(KB、MB、GB ..)に一致するようにスクリプトを変更しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top