如何在Twig中按列名分组?

问题描述 投票:0回答:2

我试图使用Twig在for循环中分组。我找到了Twig的扩展,为树枝添加了额外的功能。这是以下链接:twig-lambda。当我试图通过skillcategory分组时,它会显示两次而不是一次。

这是我得到的数据:

[
  {
    "0": {
      "skillid": 1,
      "skillname": "PHP",
      "skillcategory": "Programing Langugages",
      "skilllevel": 62
    },
    "4": {
      "skillid": 5,
      "skillname": "C#",
      "skillcategory": "Programing Langugages",
      "skilllevel": 50
    }
  },
  {
    "1": {
      "skillid": 2,
      "skillname": "Walking",
      "skillcategory": "Others",
      "skilllevel": 20
    },
    "2": {
      "skillid": 3,
      "skillname": "Jumping",
      "skillcategory": "Others",
      "skilllevel": 100
    },
    "3": {
      "skillid": 4,
      "skillname": "Naping",
      "skillcategory": "Others",
      "skilllevel": 80
    }
  }
]

我真正想要的是什么

Programing Langugages
PHP, C#

Others
Walking, Jumping, Naping

它是我的twig代码版本:

{% for key, i in skills|group_by(=> _.skillcategory) %}
   {% for b in i %}
       <div>{{b.skillcategory}}</div>
       {{b.skillname}}
   {% endfor %}
{% endfor %}
php twig slim-3
2个回答
0
投票

你快到了。只需在外面打印类别即可。

{% for key, i in skills|group_by(=> _.skillcategory) %}
   {{ key }}

   {% for b in i %}
       {{ b.skillname }}
   {% endfor %}
{% endfor %}

0
投票

首先你的JSON无效!

试试这个:

[
  {
    "0": {
      "skillid": 1,
      "skillname": "PHP",
      "skillcategory": "Programin Langugages",
      "skilllevel": 62
    },
    "4": {
      "skillid": 5,
      "skillname": "C#",
      "skillcategory": "Programin Langugages",
      "skilllevel": 50
    }
  },
  {
    "1": {
      "skillid": 2,
      "skillname": "Walking",
      "skillcategory": "Others",
      "skilllevel": 20
    },
    "2": {
      "skillid": 3,
      "skillname": "Jumping",
      "skillcategory": "Others",
      "skilllevel": 100
    },
    "3": {
      "skillid": 4,
      "skillname": "Naping",
      "skillcategory": "Others",
      "skilllevel": 80
    }
  }
]

字符串应该用双引号括起来。

编辑:我不确定但尝试这个:

{% for key, i in ['Programin Langugages', 'Others']|group_by(=> _.skillcategory) %}
   {% for b in i %}
       <div>{{b.skillcategory}}</div>
       {{b.skillname}}
   {% endfor %}
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.