Как сгруппировать по названию столбца в Twig? - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь группировать в цикле for, используя Twig. Я нашел расширение для Twig, которое добавляет дополнительные функции к 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

И это моя версия кода веточки:

{% for key, i in skills|group_by(=> _.skillcategory) %}
   {% for b in i %}
       <div>{{b.skillcategory}}</div>
       {{b.skillname}}
   {% endfor %}
{% endfor %}

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Ты почти у цели. Просто напечатайте категорию снаружи для заявления.

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

   {% for b in i %}
       {{ b.skillname }}
   {% endfor %}
{% endfor %}
0 голосов
/ 22 марта 2019

Прежде всего, ваш 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
    }
  }
]

Строки должны быть заключены в двойные кавычки.

Edit: Я не уверен, но попробуйте с этим:

{% for key, i in ['Programin Langugages', 'Others']|group_by(=> _.skillcategory) %}
   {% for b in i %}
       <div>{{b.skillcategory}}</div>
       {{b.skillname}}
   {% endfor %}
{% endfor %}
...