所以我想在10月CMS上创建一个包含前端用户数据的排行榜,
排行榜将基于数据库中当前变量的总和。我最近才开始研究细枝和十月,所以请耐心地看这个
一般变量:
{% set totalScore = totalPoints + user.xp + user.progress %}
列表(简化)
{% for user in activatedUsers %}
<div class="card">
<p class="name"><span class="rank-title">NAME</span><br>{{ user.name }}</p>
<p><span class="rank-title">LEVEL</span><br>{{ user.level }}</p>
<p><span class="rank-title">TOTAL POINTS</span><br>{{ totalPoints }} </p>
<p><span class="rank-title">PROGRESS</span><br>{{ user.progress }}</p>
<p><span class="rank-title">XP</span><br>{{ user.xp }}</p>
</div>
{% endfor %}
我不能真正使用查询进行排序,因为有些变量不在数据库中,而是在页面中定义的。
我已经研究了排序细枝函数,但无法使其正常工作。
我试过了
this solution
,但我有个例外。
为了让“usort”函数在模块/细枝/扩展文件中工作,我添加了以下代码,但它不起作用,必须有一个更简单的解决方案。。。
new \Twig_SimpleFilter('usort', array($this, 'usortFilter'))
public function usortFilter($item){
usort($item, function ($item1, $item2) {
if ($item1['orderNo'] == $item2['orderNo']) return 0;
return $item1['orderNo'] < $item2['orderNo'] ? -1 : 1;
});
return $item;
}
在阅读了细枝文档之后,我也尝试了合乎逻辑的做法:
{% for user in activatedUsers|sort('totalPoints') %}
但那里没有运气。
我可能走错了路,所以请随意提出其他建议或指出我错过的东西。
提前感谢