使用 Twig 按字母顺序排序
Posted
技术标签:
【中文标题】使用 Twig 按字母顺序排序【英文标题】:Sort alphabetically with Twig 【发布时间】:2015-04-29 15:42:33 【问题描述】:我正在尝试按字母顺序对类别列表进行排序。由于这更像是一个 php 缺陷,我正试图以here 描述的方式来做到这一点。我真的无法访问系统的核心文件,因此需要使用 Twig 标签来完成。
当使用数值变量作为 Twig 数组中的键时,不能使用内置排序过滤器过滤器。这是一个非常具体的问题,这是由于使用了 array_merge php 函数
我正在尝试将链接中的代码合并到我自己的代码中,但我无法正确完成它。
我这样称呼我的类别:
% for category in shop.categories %
category.title - category.id
% endfor %
如果我理解正确的代码,我应该这样做:
% set tempArray = %
% for category in shop.categories %
numeric : category.id , text : category.title <br />
% set tempArray = tempArray | merge(('_' ~ category.numeric):(category.text)) %
% endfor %
% for val in loopArray %
tempArray['_' ~ val] <br/ >
% endfor %
这不会对类别名称进行排序,但仍会对类别 ID 进行排序。
我有什么遗漏吗?
【问题讨论】:
twig.sensiolabs.org/doc/filters/sort.html @Med:查看我的更新答案。问题是我正在使用的数组同时使用数字作为文本值。我希望它对文本值进行排序,而不是数值。 还不够清楚,能否给我们看一些来自tempArray
的数据示例以及预期结果
您应该在尝试排序之前尝试将值转换为单一类型
@Jean:那是什么意思?我还在学习树枝:(
【参考方案1】:
忘记你提供的链接 (http://obtao.com/blog/2014/06/use-variable-key-twig-array/),它只是一个不对数组进行排序的糟糕源代码。
但是看看那里: Sorting in the template, in Symfony2: using Twig to sort a collection of objects by property
如果不创建自己的过滤器,就无法根据 twig 中的类别名称对数组进行排序。您自己的过滤器将进行排序,您将能够在您的树枝模板中使用它。
==== 不看但是如果你想知道什么坏链接====
在这个错误的链接中,这个家伙通过手动设置他想要的顺序来排序
% set loopValues = [10,20,30,40] %
其实他所有的帖子都是为了表明这一点
tempArray[val] doesn't work with val as a numeric
但适用于
tempArray['_'~val]
在一个肮脏的技巧之后(但它可能只适用于: tempArray[''~val] 但链接给出的代码无用并不重要......
【讨论】:
以上是关于使用 Twig 按字母顺序排序的主要内容,如果未能解决你的问题,请参考以下文章
Python 如何对输出的词频结果按字母顺序排序(NLTK)