2011-10-07 59 views
1

我想知道是否有人可以帮助我。我正在使用PodHawk - 一个基本的播客cms,我希望管理区域文件选择按顺序显示我的文件 - 按名称。

选择/选项下拉菜单使用此代码,是否有一种直接的方式让下拉菜单按名称顺序显示。我搜索了但在Smarty文档中找不到任何东西,但我可能使用了错误的术语!

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

千恩万谢抢

与许多感谢下面海报解决 -

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

记住这个问题的答案? – rodneyrehm

回答

1

cgwyllie忽略了asort()返回一个布尔值,而不是有序数组。所以他的方法是行不通的。由于不使用索引,因此不需要(联想)排序。

{$_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

谢谢你的澄清,你说得很对! – cgwyllie

+0

而在它,你的解决方案{$ upload | @sort}应该输出“1”,因为排序返回一个布尔真,如果排序是成功的,并且真正的输出到字符串是“1”。将结果分配给您未使用的变量,或将分类呼叫包装在{capture}块中。 – rodneyrehm

0

如果变量$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

编辑

正如rodneyrehm提到的,这种解决方案虽然海报找到了一个令人满意的解决方案,但它并不完全正确:http://www.smarty.net/forums/viewtopic.php?t=1079&postdays=0&postorder=asc&start=0

+0

你好cgwyllie,谢谢你的联系,必须承认我的深度。看看第二个链接(论坛帖子),这似乎是最有意义的,并且完美地满足了我的需求。非常感谢{$ upload | @sort:$ smarty.const.SORT_NUMERIC} –

+0

@RobOliver很高兴听到您已找到解决方案! – cgwyllie