Symfony 具有父、子、孙辈的层次化细枝布局的递归解析
在我的SF2项目中,我有一个实体(类别),我以分层格式表示,在顶部有一个父项,后面是子项、孙子项等 类别实体有一个Symfony 具有父、子、孙辈的层次化细枝布局的递归解析,symfony,macros,twig,hierarchy,Symfony,Macros,Twig,Hierarchy,在我的SF2项目中,我有一个实体(类别),我以分层格式表示,在顶部有一个父项,后面是子项、孙子项等 类别实体有一个getChildren方法,该方法工作并返回Category实体对象 我正试图找到一种方法使这个布局更具动态性,而不是必须在模板中显式地设置子项和子项变量 有更好的方法吗 <ul class="sortable"> {% for cat in cats %} {% set children = cat.getChildren %}
getChildren
方法,该方法工作并返回Category
实体对象
我正试图找到一种方法使这个布局更具动态性,而不是必须在模板中显式地设置子项
和子项
变量
有更好的方法吗
<ul class="sortable">
{% for cat in cats %}
{% set children = cat.getChildren %}
<li id="menuItem_{{ cat.id }}">
<div data-id="{{ cat.id }}">
<span>{{ cat.name }}</span>
</div>
{% for child in children %}
{% set grandchildren = child.getChildren %}
<ul>
<li id="menuItem_{{ child.id }}">
<div data-id="{{ child.id }}">
{{ child.name }}
</div>
{% for grandchild in grandchildren %}
<ul>
<li id="menuItem_{{ grandchild.id }}">
<div data-id="{{ grandchild.id }}">
{{ grandchild.name }}
</div>
</li>
</ul>
{% endfor %}
</li>
</ul>
{% endfor %}
</li>
{% endfor %}
</ul>
{猫中猫的百分比%}
{%set children=cat.getChildren%}
{%endfor%}
那么您试图实现的是对细枝中的树的递归解析,对吗?如果是,请看一看 .
然后您可以使用相同的符号来命名它谢谢,我在使用它时在应用程序中看到了一个异常。这是我的代码的一个粘贴箱——很明显我做的不对吗?我真的不知道导入宏是如何工作的,但我最好的猜测是“导入…作为tree\u children”覆盖了tree\u children变量。尝试不使用别名导入。如果不起作用,请尝试在同一文件中使用宏。太好了,谢谢。我不得不在宏中添加
{%import\u self as macros%}
。我已经更新并接受了你的答案。谢谢你的帮助。
{% import _self as macros %}
{% macro showChild(object) %}
{% import _self as macros %}
<ul>
{% for child in object.children %}
{{ macros.showChild(child) }}
{% endfor %}
<li id="menuItem_{{ object.id }}">
<div data-id="{{ object.id }}">
{{ object.name }}
</div>
</li>
</ul>
{% endmacro %}
<ul class="sortable">
{% for cat in cats %}
{{ macros.showChild(cat) }}
{% endfor %}
</ul>
index.html.twig:
{% import 'macro_file_name.html.twig' as macros %}