如何在同一个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 %}
答案

在你的控制器中,你可以创建两个数组:lastTopicslastPostByTopic[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个嵌套循环而不重复的主要内容,如果未能解决你的问题,请参考以下文章

无法在循环中修改列表元素[重复]

悬停时li元素上的嵌套css样式[重复]

悬停时li元素上的嵌套css样式[重复]

如何在js中循环赋值给页面上的li附上标签?

python中的if循环怎么样?

C++ 中没有嵌套循环的 2 组合,其中迭代次数等于 2 组合的数量