51

Does anyone know how (of if it's even possible!) to do this in Twig? I can't see anything in the documentation as to whether it's possible.

The PHP array is structured as below:

$data['data']['a']['title'] = 'Title 1';
$data['data']['a']['title'] = 'Title 2';
$data['data']['b']['title'] = 'Title 3';

Twig template code below:

{% for letter in 'a'..'z' %}
    {{ letter }}
    <ul>
        {% for key, item1 in data %}
            {% for item2 in item1 %}

                <li>{{ item2[key].title }}</li>

            {% endfor %}
        {% endfor %}                
    </ul>
{% endfor %}

Edit: After further investigation, it appears the attribute (see http://twig.sensiolabs.org/doc/functions/attribute.html) function should do the job but I am unsure as to how to use it in these circumstances.

Many thanks

Jimbo
  • 25,790
  • 15
  • 86
  • 131
Joseph Woodward
  • 9,191
  • 5
  • 44
  • 63
  • have you got an error message? I think you spelt `letter` wrong. It should be `{{ item.letter.title }}`. – F21 Nov 09 '11 at 00:57
  • Yes, I just noticed this. Unfortunately this does not actually work as it is not possible to do it like the example above, it is purely for demonstration purposes to show what I'm trying to achieve. – Joseph Woodward Nov 09 '11 at 01:01

1 Answers1

100

Have you just tried this:

attribute(item2, key).title
Guillaume Poussel
  • 9,572
  • 2
  • 33
  • 42