使用 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 按字母顺序排序的主要内容,如果未能解决你的问题,请参考以下文章

使用插入排序算法按字母顺序排序 c#

Python 如何对输出的词频结果按字母顺序排序(NLTK)

如何使用 NSFetchedResultsController 按字母顺序对 UITableView 进行排序?

按字母顺序对 argparse 帮助进行排序

使用液体按字母顺序对帖子进行排序

如何使用 Matlab 按字母顺序对属性值对进行排序