Заказ $ файла по имени - Умные шаблоны - PullRequest
1 голос
/ 07 октября 2011

Интересно, кто-нибудь может мне помочь?Я использую PodHawk - базовый cms подкаста, я хотел бы, чтобы файл области администратора выбирал, чтобы мои файлы отображались по порядку - по имени.

В раскрывающемся списке выбора / опции используется этот код, есть ли простой способполучить раскрывающийся список для отображения в порядке по имени.Я искал, но не могу найти что-нибудь в документации Smarty, но, возможно, я использую неправильную терминологию!

{foreach from=$upload item=file}
    <option value="{$file|escape:'url'}">{$file}</option>
{/foreach}

большое спасибо rob

Решено с большим спасибо благодаря плакату ниже -

{$upload|@sort:$smarty.const.SORT_NUMERIC} 
{foreach from=$upload item=file}
    <option value="{$file|escape:'url'}">{$file}</option>
{/foreach}

Ответы [ 2 ]

1 голос
/ 07 октября 2011

cgwyllie пренебрег, что asort () возвращает логическое значение, а не отсортированный массив. Так что его подход не сработает. Поскольку индекс не используется, сортировка (ssociative) не требуется.

{$_foo = $upload|sort:$smarty.const.SORT_LOCALE_STRING}
{foreach $upload as $file}
  <option value="{$file|escape:'url'}">{$file|escape:"html"}</option>
{/foreach}

должен сделать свое дело. Убедитесь, что вам действительно нужен этот файл $ urlencoded, в противном случае измените escape: «url» для экранирования: «html».

(приведенный выше синтаксис Smarty3)

0 голосов
/ 07 октября 2011

Если переменная $upload содержит массив имен файлов, то должна быть возможность применить функцию PHP asort (http://php.net/asort) к массиву в качестве модификатора smarty.

{foreach from=$upload|@asort item=file}
    <option value="{$file|escape:'url'}">{$file}</option>
{/foreach}

Символ @ необходим для применения модификатора к массиву в целом, а не к каждому отдельному элементу (см. http://www.smarty.net/docsv2/en/language.modifiers.tpl)

Если массив состоит из более сложных структур данных, чем просто строки,Следующее обсуждение может быть полезно для вас: http://www.smarty.net/forums/viewtopic.php?t=1079&postdays=0&postorder=asc&start=0

Редактировать

Как упомянуто Роднейремом, это решение не совсем корректно, хотя автор нашел удовлетворительное решениев: http://www.smarty.net/forums/viewtopic.php?t=1079&postdays=0&postorder=asc&start=0

...