我有一个自连接表,其中每个文件夹都有一个父文件夹,并且其深度是无限的。一个文件夹可以有另一个文件夹作为父文件夹,没有深度限制。
今天我的代码看起来像这样,我正在寻找一种根据需要深入挖掘的方法,而无需对每个步骤进行硬编码,是否有一种方法可以用循环定义一个树枝函数,该函数在每轮调用自身在循环?
<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>
您需要一个单独的文件渲染选项,该选项递归地包含自身:
<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 %}
我在这里编写了这段代码,所以不要指望它是正确的,但它应该足以让您了解这个想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)