当前位置:  开发笔记 > 编程语言 > 正文

在Symfony-Doctrine博客中嵌套注释的Twig循环

如何解决《在Symfony-Doctrine博客中嵌套注释的Twig循环》经验,为你挑选了1个好方法。

我正在尝试使用Twig模板在Symfony和Doctrine的博客上实现评论部分.

我在尝试为我的评论实施响应系统时遇到了一些麻烦.我想要这样的东西:

This is comment number 1

This is a response to comment number 1

This is a response to response just above

所以我想有一个嵌套的评论系统.

我有一个Comment实体,其$response属性与另一个Comment实体具有OneToOne关系:

/**
 * @ORM\OneToOne(targetEntity="Comment")
 */
protected $response;

在我的控制器中,我只是得到这样的评论:

$comments = $this->getDoctrine()
                    ->getManager()
                    ->getRepository('AppBundle:Comment')
                    ->findByArticle($article);

现在我正在尝试创建HTML(Twig),但我不知道如何遍历所有注释和相关的响应,因此我可以创建HTML,就像我上面写的那样......

有谁可以帮助我吗?

谢谢.



1> biera..:

你需要的只是复发.您有几个选项可供选择,其中一个是使用宏.

使用您的宏创建twig文件:

{# src/AppBundle/Resources/views/Default/_macro.html.twig #}

{% macro print_comments_recursively(comment) %}
    

{{ comment }}

{# implement __toString on your Comment class or print appropriate property #} {% if comment.response is not null %} {{ _self.print_comments_recursively(comment.response) }} {% endif %}
{% endmacro %}

在视图中导入宏并使用它:

{% import 'AppBundle:Default:_macro.html.twig' as macros %}

{{ comment }}

{% if comment.response %} {{ macros.print_comments_recursively(comment.response) }} {% endif %}

在这里你有类似的问题,已经解决了,与其他解决方案:如何在Twig中渲染树

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有