Freemarker中的sort和sort_by内置列表。如何在Freemarker中对对象进行排序?
<#assign myObject = {
'item1':{'name': 'Name One', 'url': 'https://www.one.com, 'order': 1},
'item2':{'name': 'Name Two', 'url': 'https://www.two.com, 'order': 2},
'item3'...
}/>
<#macro displayobjectLinks>
<ul>
<#list objectLinks?keys as info>
<#if (info != "item1")>
<li><a href="${objectLinks[info].url}">${objectLinks[info].name}</a></li>
</#if>
</#list>
</ul>
</#macro?
如何根据'订单'按顺序显示?
我还需要访问我的对象的键(item1,item2 ......),因为我正在基于它做一些事情。
答案 0 :(得分:0)
您的对象是一个哈希,内置values
,返回一个序列,可以是sorted。所以,你可以这样做:
$str_buffer = '';
$foo = while(somethign here too){
$str_buffer.= "<tr class='table_headsnonw' style='font-size:12px;'>
<td>1</td>
<td>
3
</td>
<td>300</td>
<td>300</td>
<td>300</td>
<td>300</td>
<td>300</td>
<td>300</td>
</tr>";
}
$variable="stuff".$str_buffer." other static stuff";
echo $variable;
请注意,并非所有的哈希都支持这一点,但你会没事的。
答案 1 :(得分:0)
sort_by
返回按给定哈希子变量升序排序的哈希序列。 (对于降序使用,然后使用反向内置。)规则与内置排序相同,不同之处在于序列的子变量必须为哈希,并且必须提供哈希子的名称。决定顺序的变量。例如:
您可以使用以下代码:
<#list objectLinks?sort_by(“ name”)作为信息>
#list>