0

I am trying to group in for loop using Twig. I have found an extension for Twig which adds additional features to twig. Here is the link for that: twig-lambda. When I am trying to group by skillcategory it shows two times instead once.

Here is the data i get:

[
  {
    "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
    }
  }
]

What I actually want to get

Programing Langugages
PHP, C#

Others
Walking, Jumping, Naping

And it is my version of twig code:

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

2 Answers2

0

First of all your JSON in not valid!

Try with this :

[
  {
    "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
    }
  }
]

Strings should be wrapped in double quotes.

Edit: I m not sure but try with this:

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

You're almost there. Just print category outside for statement.

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

   {% for b in i %}
       {{ b.skillname }}
   {% endfor %}
{% endfor %}
Mike Doe
  • 16,349
  • 11
  • 65
  • 88
Sanan Fataliyev
  • 612
  • 8
  • 16