I have a self-joining table where each folder has a parent, and the depth of this is unlimited. One folder can have another folder as a parent, no restriction on the depth.<
This has to be done using recursion. I've never tested it with twig but you could develope a mechanism where you recursively including a template.
So your current template would include itself within the loop until a specific condition is reached. So you need some kind of if clause in your inner loop.
Good luck ;)
You need a separate file rendering options that recursively includes itself:
<select>
<option value="none">No parent</option>
{% include 'options.html.twig' with {'folders': folders, 'level': 0} %}
</select>
options.html.twig
:
{% for folder in folders %}
<option value="{{ folder.id }}">
{% for i in range(0, level) %} {% endfor %}
{{ folder.name }}
</option>
{% include 'options.html.twig' with {'folders': folder.children, 'level': level + 1} %}
{% endfor %}
I wrote this code right here, so don't expect it to be correct, but it should be enough to give you the idea.