如何在同一个li元素中处理2个嵌套循环而不重复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在同一个li元素中处理2个嵌套循环而不重复相关的知识,希望对你有一定的参考价值。
我有2个变量数组,一个用于显示主题,另一个用于显示每个主题的最后一篇文章。每次显示主题时都会重复发布一个帖子。如何在同一元素li中管理这两个循环
{% for lasttopic in lasttopics %}
<li class="row bg2">
<div class="list-inner">
<a href="{{ path('showtopic', {'id': lasttopic.id}) }}" class="topictitle">
{{ lasttopic.title }}
</a><br />
</div>
{% for lastpost in lastposts %}
Par <a href="" class="username">
{{ lastpost[0].user.username }}
</a>
<a href="" title="Go to last post" class="lastpost-last">
<i class="fa fa-arrow-right"></i>
</a>
<br />{{ lastpost[0].created|date('d/m/Y') }}
{% endfor %}
</li>
<hr>
{% endfor %}
答案
在你的控制器中,你可以创建两个数组:lastTopics
和lastPostByTopic[ID_TOPIC]
。或者将两个表合并为一个多维。
Controller
:
[
'topic' => Your topic object,
'lastMessage' => Last message object
],
[
'topic' => Your topic object,
'lastMessage' => Last message object
],
[
'topic' => Your topic object,
'lastMessage' => Last message object
]
Twig
:
{% for element in topics %}
{{ dump(element.topic) }}
{{ dump(element.lastMessage) }}
{% endif %}
Twig中的连续循环并不好。 :)
另一答案
谢谢您的回答。我解决了这个问题。
Add in Topic entity
public function countPosts()
{
return count($this->posts);
}
public function lastPost() {
return $this->posts[$this->countPosts()-1];
}
In Twig template
{% for lasttopic in lasttopics %}
<a href="" class="topictitle">
{{ lasttopic.title }}
</a>
{% if lasttopic.countPosts > 0 %}
<span>
<a href="" class="username">
{{ lasttopic.lastPost.title }}
</a>
</span>
<span>
<a href="" class="username">
{{ lasttopic.lastPost.auteur.username }}
</a>
</span>
{% endif %}
{% endfor %}
以上是关于如何在同一个li元素中处理2个嵌套循环而不重复的主要内容,如果未能解决你的问题,请参考以下文章