如何在 Twig 中渲染树
我想渲染一棵深度不确定的树(孩子的孩子的孩子等)。我需要递归地循环遍历数组;我怎样才能在 Twig 中做到这一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想渲染一棵深度不确定的树(孩子的孩子的孩子等)。我需要递归地循环遍历数组;我怎样才能在 Twig 中做到这一点?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
我尝试了 domi27 的想法并想出了这。我制作了一个嵌套数组作为我的树, ['link']['sublinks'] 为 null 或另一个包含更多相同内容的数组。
模板
递归使用的子模板文件:
然后在主模板中调用它(那里有一些多余的“with”东西):
宏
可以实现类似的效果使用宏:
在主模板中,执行以下操作:
I played around with domi27's idea and came up with this. I made a nested array as my tree, ['link']['sublinks'] is null or another array of more of the same.
Templates
The sub-template file to recurse with:
Then in the main template, call this (kind of redundant 'with' stuff there):
Macros
A similar effect can be achieved with macros:
In the main template, do this:
Twig 2.0 - 2.11
如果您想在同一模板中使用宏,您应该使用类似的内容来保持与 Twig 2.x 兼容:
这扩展了
random-coder
的答案并将dr.scre
的提示合并到 有关宏的 Twig 文档现在使用_self
,但在本地导入。Twig >= 2.11
从 Twig 2.11 开始,您可以省略
{% import _self as macros %}
,因为内联宏会在_self< 下自动导入/code> 命名空间(请参阅 Twig 公告:自动宏导入):
Twig 2.0 - 2.11
If you want to use a macro in the same template, you should use something like this to stay compatible with Twig 2.x:
This extends
random-coder
's answer and incorporatesdr.scre
's hint to the Twig documentation about macros to now use_self
, but import locally.Twig >= 2.11
As of Twig 2.11, you can omit the
{% import _self as macros %}
, as inlined macros are imported automatically under the_self
namespace (see Twig announcement: Automatic macro import):如果您运行的是 PHP 5.4 或更高版本,Alain Tiemblo 为这个问题提供了一个很棒的新解决方案(截至 2016 年 5 月):https://github.com/ninsuo/jordan-tree。
这是一个“树”标签,专门用于这个目的。标记看起来像这样:
If you're running PHP 5.4 or higher, there is a wonderful new solution (as of May 2016) to this problem by Alain Tiemblo: https://github.com/ninsuo/jordan-tree.
It's a "tree" tag that serves this exact purpose. Markup would look like this:
一开始我以为这个问题可以通过简单的方式解决,但事实并非如此简单。
您需要创建逻辑(可能使用 PHP 类方法),何时包含 Twig 子模板,何时不包含。
所以你可以使用特殊的 Twig 循环变量,它在 Twig for 循环中可用。但我不确定这个循环变量的范围。
此信息和其他信息可在 Twigs “for” Docu 上找到!
First I thought this may be solved in a straightforward way, but it isn't that easy.
You need to create logic, maybe with a PHP class method, when to include a Twig subtemplate and when not.
So you could use the special Twig loop variable, which is available inside a Twig for loop. But I'm not sure about the scope of this loop variable.
This and other information are available on Twigs "for" Docu!
采取了流感的答案并对其进行了一些修改:
Took flu's answer and modified it a little:
这里的答案引导我找到我的解决方案。
我有一个类别实体,具有自引用多对一关联(父级到子级)。
在我的 Twig 模板中,我渲染树视图如下:
The answers here lead my to my solution.
I have a category entity with a self-referencing many-to-one association (parent to children).
In my Twig template I am rendering the tree view like this: