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.
Today my code looks like this, and I am looking for a way of digging down as deep as it needs without hard-coding each step down, is there perhaps a way to define a twig function with a loop, that calls itself on each round in the loop?
<select id='parent' name='container'>
<option value='none'>No parent</option>
{% for folder in folders %}
<option value='{{ folder.id }}'>{{ folder.name }}</option>
{% for folder in folder.children %}
<option value='{{ folder.id }}'> {{ folder.name }}</option>
{% endfor %}
{% endfor %}
</select>
You need a separate file rendering options that recursively includes itself:
options.html.twig
:I wrote this code right here, so don't expect it to be correct, but it should be enough to give you the idea.
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 ;)