Intereting Posts
Как определить запрашиваемую страницу в PHP Преобразование чисел в визуальный рейтинг (звезды)? Проверьте, нравится ли пользователю моя страница через веб-сайт Сделать элемент userid в массиве в качестве родительского ключа php Как получить значение из одного столбца таблицы, когда два столбца с одинаковым именем существуют в соединении sql Artisan, создание таблиц в базе данных Должен ли я регенерировать_session_id на каждой странице? Портативный и безопасный способ получить PATH_INFO MySQL Возвращает различное количество строк на localhost vs live server для одного и того же кода Сбросить ключи элементов массива в php? Как сделать флажки HABTM CakePHP по алфавиту сверху вниз в столбцах Уведомление WooCommerce, выполняется только один раз Использование оболочки bash из PHP Как создать собственный твидовый тэг, который выполняет обратный вызов? Не удается подключиться к MySQL на Live с Laravel 5

Модификатор Smarty

Я использую Smarty, и один из моих разделов показывает имена файлов, включая даты, размер файла, последний доступ и т. Д. …

Я хочу отобразить размер файла в K, если он меньше 1024, в Mb, если меньше 1048576 и т. Д.

Данные (информация о файле) поступают из базы данных (имя, размер файла, дата и т. Д.)

например:

File Mime Size Date Filename1.jpg mime/jpg 14.1Kb 2011/12/12 

Есть ли в Smarty модификатор, который делает это?

благодаря

создайте файл в каталоге плагинов: modifier.filesize.php

затем добавьте этот код:

 <?php /** * Smarty plugin * @package Smarty * @subpackage PluginsModifier */ /** * Smarty replace modifier plugin * * Type: modifier<br> * Name: filesize<br> * Purpose: show the filesize of a file in kb, mb, gb etc... * * @param string $ * @return string */ function smarty_modifier_filesize($size) { $size = max(0, (int)$size); $units = array( 'b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb'); $power = $size > 0 ? floor(log($size, 1024)) : 0; return number_format($size / pow(1024, $power), 2, '.', ',') . $units[$power]; } ?> 

то вы можете использовать: {$filename.size|filesize}

предполагая, что размер, который вы даете, первоначально находится в байтах,

попробуй это:

 {if $size lt 1024} {$size} bytes {elseif $size lt 1048576} {$size / 1024}Kb {else} ... {/if}